Created
March 18, 2022 13:06
-
-
Save Dema/01985a4a8f78040adcdf02b7d5cb8d76 to your computer and use it in GitHub Desktop.
oneOf issue
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"openapi": "3.0.1", | |
"info": { | |
"title": "Challenge-service API", | |
"version": "1.0" | |
}, | |
"servers": [ | |
{ | |
"url": "http://localhost:8080", | |
"description": "Generated server url" | |
} | |
], | |
"security": [ | |
{ | |
"BearerAuth": [] | |
} | |
], | |
"tags": [ | |
{ | |
"name": "Challenge Api" | |
} | |
], | |
"paths": { | |
"/api/v1/challenges/{id}": { | |
"get": { | |
"tags": ["Challenge Api"], | |
"summary": "Get Challenge by Id", | |
"operationId": "findChallengeById", | |
"parameters": [ | |
{ | |
"name": "id", | |
"in": "path", | |
"description": "Challenge Id", | |
"required": true, | |
"schema": { | |
"type": "string", | |
"format": "uuid" | |
} | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "OK", | |
"content": { | |
"*/*": { | |
"schema": { | |
"$ref": "#/components/schemas/ChallengeResponseDto" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"put": { | |
"tags": ["Challenge Api"], | |
"summary": "Update Challenge", | |
"operationId": "updateChallenge", | |
"parameters": [ | |
{ | |
"name": "id", | |
"in": "path", | |
"description": "Challenge Id", | |
"required": true, | |
"schema": { | |
"type": "string", | |
"format": "uuid" | |
} | |
} | |
], | |
"requestBody": { | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/ChallengeRequestDto" | |
} | |
} | |
}, | |
"required": true | |
}, | |
"responses": { | |
"200": { | |
"description": "OK", | |
"content": { | |
"*/*": { | |
"schema": { | |
"$ref": "#/components/schemas/ChallengeResponseDto" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"delete": { | |
"tags": ["Challenge Api"], | |
"summary": "Delete Challenge", | |
"operationId": "deleteChallenge", | |
"parameters": [ | |
{ | |
"name": "id", | |
"in": "path", | |
"description": "Challenge Id", | |
"required": true, | |
"schema": { | |
"type": "string", | |
"format": "uuid" | |
} | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "OK" | |
} | |
} | |
} | |
}, | |
"/api/v1/challenges": { | |
"get": { | |
"tags": ["Challenge Api"], | |
"summary": "Get Page of Challenge by Page number and Page size", | |
"operationId": "getChallengesPage", | |
"parameters": [ | |
{ | |
"name": "page", | |
"in": "query", | |
"description": "Zero-based page index (0..N)", | |
"required": false, | |
"schema": { | |
"minimum": 0, | |
"type": "integer", | |
"default": 0 | |
} | |
}, | |
{ | |
"name": "size", | |
"in": "query", | |
"description": "The size of the page to be returned", | |
"required": false, | |
"schema": { | |
"minimum": 1, | |
"type": "integer", | |
"default": 20 | |
} | |
}, | |
{ | |
"name": "sort", | |
"in": "query", | |
"description": "Sorting criteria in the format: property(,asc|desc). Default sort order is ascending. Multiple sort criteria are supported.", | |
"required": false, | |
"schema": { | |
"type": "array", | |
"items": { | |
"type": "string" | |
} | |
} | |
} | |
], | |
"responses": { | |
"200": { | |
"description": "OK", | |
"content": { | |
"*/*": { | |
"schema": { | |
"$ref": "#/components/schemas/PageChallengeResponseDto" | |
} | |
} | |
} | |
} | |
} | |
}, | |
"post": { | |
"tags": ["Challenge Api"], | |
"summary": "Create Challenge", | |
"operationId": "createChallenges", | |
"requestBody": { | |
"content": { | |
"application/json": { | |
"schema": { | |
"$ref": "#/components/schemas/ChallengeRequestDto" | |
} | |
} | |
}, | |
"required": true | |
}, | |
"responses": { | |
"201": { | |
"description": "Created", | |
"content": { | |
"*/*": { | |
"schema": { | |
"$ref": "#/components/schemas/ChallengeResponseDto" | |
} | |
} | |
} | |
} | |
} | |
} | |
} | |
}, | |
"components": { | |
"schemas": { | |
"AbstractRequestStepDto": { | |
"required": ["description", "stepType", "title"], | |
"type": "object", | |
"properties": { | |
"stepNumber": { | |
"minimum": 1, | |
"type": "integer", | |
"format": "int32" | |
}, | |
"title": { | |
"maxLength": 1024, | |
"minLength": 0, | |
"type": "string" | |
}, | |
"description": { | |
"maxLength": 1024, | |
"minLength": 0, | |
"type": "string" | |
}, | |
"stepType": { | |
"type": "string", | |
"enum": [ | |
"ACTIVITY", | |
"ACTION", | |
"DOWNLOAD_CONFIRMATION", | |
"LINK_CONFIRMATION" | |
] | |
} | |
}, | |
"description": "Parent for all steps", | |
"discriminator": { | |
"propertyName": "stepType", | |
"mapping": { | |
"LINK_CONFIRMATION": "#/components/schemas/LinkConfirmationRequestDto", | |
"DOWNLOAD_CONFIRMATION": "#/components/schemas/DownloadConfirmationRequestDto", | |
"ACTIVITY": "#/components/schemas/ActivityRequestStepDto", | |
"ACTION": "#/components/schemas/ActionRequestStepDto" | |
} | |
}, | |
"oneOf": [ | |
{ | |
"$ref": "#/components/schemas/LinkConfirmationRequestDto" | |
}, | |
{ | |
"$ref": "#/components/schemas/DownloadConfirmationRequestDto" | |
}, | |
{ | |
"$ref": "#/components/schemas/ActivityRequestStepDto" | |
}, | |
{ | |
"$ref": "#/components/schemas/ActionRequestStepDto" | |
} | |
] | |
}, | |
"ActionRequestStepDto": { | |
"required": ["description", "stepType", "title"], | |
"type": "object", | |
"allOf": [ | |
{ | |
"$ref": "#/components/schemas/AbstractRequestStepDto" | |
}, | |
{ | |
"type": "object", | |
"properties": { | |
"actionType": { | |
"type": "string", | |
"enum": [ | |
"LIKE", | |
"VOTING", | |
"BUYING_NFT", | |
"SELLING_NFT", | |
"NFT_OFFER", | |
"START_FORTUNE_WHEEL", | |
"OPENING_COLLECTORS_PACK", | |
"VIDEO_VIEWING", | |
"REFERRAL_REGISTRATION", | |
"NEW_LEVEL", | |
"INSTALLING_EXTERNAL_APPLICATIONS", | |
"SHARE_BUTTON_CLICK", | |
"SUBSCRIPTION", | |
"HOLDING", | |
"FILLING_PROFILE" | |
] | |
}, | |
"actionQuantity": { | |
"minimum": 1, | |
"type": "integer", | |
"format": "int32" | |
}, | |
"actionSharingType": { | |
"type": "string", | |
"enum": [ | |
"POST", | |
"FALL", | |
"QUIZ", | |
"AUCTION", | |
"TRIAL", | |
"POLL_RESULTS", | |
"POLL" | |
] | |
}, | |
"actionSharingId": { | |
"type": "string", | |
"format": "uuid" | |
}, | |
"actionProfileParam": { | |
"type": "array", | |
"items": { | |
"type": "string", | |
"enum": ["EMAIL", "PHONE", "SOCIAL_NETWORK", "WALLET"] | |
} | |
}, | |
"actionLevel": { | |
"type": "integer", | |
"format": "int32" | |
} | |
} | |
} | |
] | |
}, | |
"ActivityRequestStepDto": { | |
"required": ["description", "stepType", "title"], | |
"type": "object", | |
"allOf": [ | |
{ | |
"$ref": "#/components/schemas/AbstractRequestStepDto" | |
}, | |
{ | |
"type": "object", | |
"properties": { | |
"activityType": { | |
"type": "string", | |
"enum": [ | |
"POLL", | |
"FEED", | |
"QUIZ", | |
"LOOTBOX", | |
"DONATION", | |
"CHALLENGE", | |
"VOTE_NFT" | |
] | |
}, | |
"activityId": { | |
"type": "string", | |
"format": "uuid" | |
} | |
} | |
} | |
] | |
}, | |
"ChallengeRequestDto": { | |
"required": [ | |
"celebrityId", | |
"cover", | |
"description", | |
"rewards", | |
"status", | |
"steps", | |
"title" | |
], | |
"type": "object", | |
"properties": { | |
"priority": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"title": { | |
"maxLength": 1024, | |
"minLength": 0, | |
"type": "string" | |
}, | |
"description": { | |
"maxLength": 1024, | |
"minLength": 0, | |
"type": "string" | |
}, | |
"announcement": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"announcementTime": { | |
"type": "string", | |
"format": "date-time" | |
}, | |
"celebrityId": { | |
"type": "string", | |
"format": "uuid" | |
}, | |
"cover": { | |
"type": "string" | |
}, | |
"status": { | |
"type": "string", | |
"enum": [ | |
"PUBLISHED", | |
"AWAITING_PUBLICATION", | |
"DRAFT", | |
"ARCHIVED", | |
"DELETED" | |
] | |
}, | |
"publishTime": { | |
"type": "string", | |
"format": "date-time" | |
}, | |
"startTime": { | |
"type": "string", | |
"format": "date-time" | |
}, | |
"endTime": { | |
"type": "string", | |
"format": "date-time" | |
}, | |
"rewardType": { | |
"type": "string", | |
"enum": ["AUTO", "MANUAL"] | |
}, | |
"winnersQuantity": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"steps": { | |
"type": "array", | |
"items": { | |
"oneOf": [ | |
{ | |
"$ref": "#/components/schemas/ActionRequestStepDto" | |
}, | |
{ | |
"$ref": "#/components/schemas/ActivityRequestStepDto" | |
}, | |
{ | |
"$ref": "#/components/schemas/DownloadConfirmationRequestDto" | |
}, | |
{ | |
"$ref": "#/components/schemas/LinkConfirmationRequestDto" | |
} | |
] | |
} | |
}, | |
"rewards": { | |
"type": "array", | |
"items": { | |
"$ref": "#/components/schemas/RewardRequestDto" | |
} | |
} | |
}, | |
"description": "Challenge Request Dto" | |
}, | |
"DownloadConfirmationRequestDto": { | |
"required": ["description", "stepType", "title"], | |
"type": "object", | |
"allOf": [ | |
{ | |
"$ref": "#/components/schemas/AbstractRequestStepDto" | |
}, | |
{ | |
"type": "object", | |
"properties": { | |
"downloadConfirmation": { | |
"type": "string" | |
} | |
} | |
} | |
] | |
}, | |
"LinkConfirmationRequestDto": { | |
"required": ["description", "stepType", "title"], | |
"type": "object", | |
"allOf": [ | |
{ | |
"$ref": "#/components/schemas/AbstractRequestStepDto" | |
}, | |
{ | |
"type": "object", | |
"properties": { | |
"linkConfirmation": { | |
"type": "string" | |
} | |
} | |
} | |
] | |
}, | |
"RewardRequestDto": { | |
"required": ["awardType", "rewardNumber"], | |
"type": "object", | |
"properties": { | |
"rewardNumber": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"quantity": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"collectiblePackType": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"goldStatusPeriod": { | |
"type": "string", | |
"enum": ["SEVEN", "FOURTEEN", "TWENTY_EIGHT"] | |
}, | |
"awardType": { | |
"type": "string", | |
"enum": [ | |
"COINS", | |
"COLLECTIBLE_PACK", | |
"NFT", | |
"SUBSCRIBE", | |
"FORTUNE_WHEEL", | |
"CUSTOM" | |
] | |
}, | |
"description": { | |
"maxLength": 1024, | |
"minLength": 0, | |
"type": "string" | |
}, | |
"nftIds": { | |
"type": "array", | |
"items": { | |
"type": "string", | |
"format": "uuid" | |
} | |
} | |
} | |
}, | |
"ChallengeResponseDto": { | |
"required": ["celebrityId", "cover", "description", "status", "title"], | |
"type": "object", | |
"properties": { | |
"priority": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"title": { | |
"maxLength": 1024, | |
"minLength": 0, | |
"type": "string" | |
}, | |
"description": { | |
"maxLength": 1024, | |
"minLength": 0, | |
"type": "string" | |
}, | |
"announcement": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"announcementTime": { | |
"type": "string", | |
"format": "date-time" | |
}, | |
"celebrityId": { | |
"type": "string", | |
"format": "uuid" | |
}, | |
"cover": { | |
"type": "string" | |
}, | |
"status": { | |
"type": "string", | |
"enum": [ | |
"PUBLISHED", | |
"AWAITING_PUBLICATION", | |
"DRAFT", | |
"ARCHIVED", | |
"DELETED" | |
] | |
}, | |
"publishTime": { | |
"type": "string", | |
"format": "date-time" | |
}, | |
"startTime": { | |
"type": "string", | |
"format": "date-time" | |
}, | |
"endTime": { | |
"type": "string", | |
"format": "date-time" | |
}, | |
"rewardType": { | |
"type": "string", | |
"enum": ["AUTO", "MANUAL"] | |
}, | |
"winnersQuantity": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"id": { | |
"type": "string", | |
"format": "uuid" | |
} | |
} | |
}, | |
"PageChallengeResponseDto": { | |
"type": "object", | |
"properties": { | |
"totalPages": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"totalElements": { | |
"type": "integer", | |
"format": "int64" | |
}, | |
"size": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"content": { | |
"type": "array", | |
"items": { | |
"$ref": "#/components/schemas/ChallengeResponseDto" | |
} | |
}, | |
"number": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"sort": { | |
"$ref": "#/components/schemas/Sort" | |
}, | |
"first": { | |
"type": "boolean" | |
}, | |
"last": { | |
"type": "boolean" | |
}, | |
"numberOfElements": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"pageable": { | |
"$ref": "#/components/schemas/PageableObject" | |
}, | |
"empty": { | |
"type": "boolean" | |
} | |
} | |
}, | |
"PageableObject": { | |
"type": "object", | |
"properties": { | |
"offset": { | |
"type": "integer", | |
"format": "int64" | |
}, | |
"sort": { | |
"$ref": "#/components/schemas/Sort" | |
}, | |
"pageSize": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"pageNumber": { | |
"type": "integer", | |
"format": "int32" | |
}, | |
"paged": { | |
"type": "boolean" | |
}, | |
"unpaged": { | |
"type": "boolean" | |
} | |
} | |
}, | |
"Sort": { | |
"type": "object", | |
"properties": { | |
"empty": { | |
"type": "boolean" | |
}, | |
"sorted": { | |
"type": "boolean" | |
}, | |
"unsorted": { | |
"type": "boolean" | |
} | |
} | |
} | |
}, | |
"securitySchemes": { | |
"BearerAuth": { | |
"type": "http", | |
"scheme": "bearer" | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment