diff --git a/openapi.yml b/openapi.yml new file mode 100644 index 0000000000..9abc61113f --- /dev/null +++ b/openapi.yml @@ -0,0 +1,314 @@ +openapi: 3.1.0 +info: + version: "2" + title: Relationships API v2 + +paths: + "/api/v1/Relationships/{id}": + get: + tags: + - Relationships + parameters: + - name: id + in: path + required: true + style: simple + schema: + type: string + example: "REL_________________" + nullable: false + responses: + "200": + description: Success + content: + application/json: + schema: + "$ref": "#/components/schemas/HttpResponseEnvelopeRelationship" + "404": + description: Not Found + content: + application/json: + schema: + "$ref": "#/components/schemas/HttpResponseEnvelopeError" + "/api/v1/Relationships": + get: + tags: + - Relationships + parameters: + - name: PageNumber + in: query + style: form + required: false + schema: + type: integer + - name: PageSize + in: query + style: form + required: false + schema: + type: integer + format: int32 + - name: ids + in: query + style: form + required: true + schema: + type: array + items: + type: string + example: "REL_________________" + nullable: false + responses: + "200": + description: Success + content: + application/json: + schema: + "$ref": "#/components/schemas/PagedHttpResponseEnvelopeListRelationshipsResponse" + post: + tags: + - Relationships + requestBody: + content: + application/json: + schema: + type: object + properties: + relationshipTemplateId: + type: string + example: "RLT_________________" + nullable: false + content: + type: string + format: byte + nullable: false + additionalProperties: false + responses: + "200": + description: Success + content: + application/json: + schema: + "$ref": "#/components/schemas/HttpResponseEnvelopeRelationship" + "400": + description: > + Bad Request

+ Can contain one of the following error codes: + - `error.platform.validation.relationshipRequest.cannotSendRelationshipRequestToYourself` + - `error.platform.validation.relationshipRequest.relationshipToTargetAlreadyExists` + content: + application/json: + schema: + "$ref": "#/components/schemas/HttpResponseEnvelopeError" + + "404": + description: Not Found + content: + application/json: + schema: + "$ref": "#/components/schemas/HttpResponseEnvelopeError" + "/api/v1/Relationships/{id}/Accept": + put: + tags: + - Relationships + parameters: + - name: id + in: path + required: true + style: simple + schema: + type: string + responses: + "200": + description: Success + content: + application/json: + schema: + "$ref": "#/components/schemas/HttpResponseEnvelopeRelationship" + "400": + description: > + Bad Request

+ Can contain one of the following error codes: + - `error.platform.validation.relationshipRequest.cannotAcceptOrRejectRelationshipRequestAddressedToSomeoneElse` + - `error.platform.validation.relationshipRequest.relationshipIsNotInCorrectStatus` + content: + application/json: + schema: + "$ref": "#/components/schemas/HttpResponseEnvelopeError" + "404": + description: Not Found + content: + application/json: + schema: + "$ref": "#/components/schemas/HttpResponseEnvelopeError" + "/api/v1/Relationships/{id}/Reject": + put: + tags: + - Relationships + parameters: + - name: id + in: path + required: true + style: simple + schema: + type: string + responses: + "200": + description: Success + content: + application/json: + schema: + "$ref": "#/components/schemas/HttpResponseEnvelopeRelationship" + "400": + description: > + Bad Request

+ Can contain one of the following error codes: + - `error.platform.validation.relationshipRequest.cannotAcceptOrRejectRelationshipRequestAddressedToSomeoneElse` + - `error.platform.validation.relationshipRequest.relationshipIsNotInCorrectStatus` + content: + application/json: + schema: + "$ref": "#/components/schemas/HttpResponseEnvelopeError" + "404": + description: Not Found + content: + application/json: + schema: + "$ref": "#/components/schemas/HttpResponseEnvelopeError" + "/api/v1/Relationships/{id}/Revoke": + put: + tags: + - Relationships + parameters: + - name: id + in: path + required: true + style: simple + schema: + type: string + responses: + "200": + description: Success + content: + application/json: + schema: + "$ref": "#/components/schemas/HttpResponseEnvelopeRelationship" + "400": + description: > + Bad Request

+ Can contain one of the following error codes: + - `error.platform.validation.relationshipRequest.cannotRevokeRelationshipRequestNotCreatedByYourself` + - `error.platform.validation.relationshipRequest.relationshipIsNotInCorrectStatus` + content: + application/json: + schema: + "$ref": "#/components/schemas/HttpResponseEnvelopeError" + "404": + description: Not Found + content: + application/json: + schema: + "$ref": "#/components/schemas/HttpResponseEnvelopeError" + +components: + securitySchemes: + oauth: + type: "oauth2" + flows: + password: + tokenUrl: "http://localhost:8081/connect/token" + scopes: {} + schemas: + HttpResponseEnvelopeRelationship: + type: object + properties: + result: + $ref: "#/components/schemas/Relationship" + + Relationship: + type: object + properties: + id: + type: string + example: "REL_________________" + relationshipTemplateId: + type: string + example: "RLT_________________" + from: + type: string + example: "id1_________________________________" + to: + type: string + example: "id1_________________________________" + createdAt: + type: string + format: date-time + status: + $ref: "#/components/schemas/RelationshipStatus" + auditLog: + type: array + items: + $ref: "#/components/schemas/RelationshipAuditLogEntry" + additionalProperties: false + + RelationshipAuditLogEntry: + type: object + properties: + createdAt: + type: string + format: date-time + createdBy: + type: string + example: "id1_________________________________" + createdByDevice: + type: string + example: "DVC_________________" + reason: + type: string + example: "Creation|AcceptanceOfCreation|RejectionOfCreation|RevocationOfCreation" + enum: + - Creation + - AcceptanceOfCreation + - RejectionOfCreation + - RevocationOfCreation + oldStatus: + allOf: + - $ref: "#/components/schemas/RelationshipStatus" + nullable: true + newStatus: + allOf: + - $ref: "#/components/schemas/RelationshipStatus" + additionalProperties: false + + RelationshipStatus: + type: string + enum: + - Pending + - Accepted + - Rejected + - Revoked + example: "Pending|Accepted|Rejected|Revoked" + + HttpResponseEnvelopeError: + type: object + properties: + error: + $ref: "#/components/schemas/HttpError" + additionalProperties: false + + HttpError: + type: object + properties: + id: + type: string + example: "ERR_________________" + code: + type: string + message: + type: string + docs: + type: string + time: + type: string + format: date-time + additionalProperties: false