openapi: 3.0.1 info: title: Controlplane Api ApiChangelog ApiSpecification API description: API of the TARDIS control plane. With this API configuration connectivity between different Tardis instances in ensured contact: name: TARDIS url: https://developer.telekom.de/docs/src/tardis_customer_handbook/support/ email: FMB_TARDIS_Support@telekom.de version: 1.0.0 x-api-category: TARDIS x-vendor: false servers: - url: https://api.telekom.de/controlplane/v1 tags: - name: ApiSpecification description: Manage ApiSpecifications paths: /apispecifications: get: tags: - ApiSpecification summary: Find all ApiSpecifications description: Find all API Specifications of a Team operationId: getAllApiSpecifications parameters: - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/Cursor' - $ref: '#/components/parameters/Sort' responses: '200': description: OK headers: X-Total-Count: $ref: '#/components/headers/XTotalCount' X-Result-Count: $ref: '#/components/headers/XResultCount' content: application/json: schema: $ref: '#/components/schemas/ApiSpecificationListResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '415': $ref: '#/components/responses/UnsupportedMediaType' '500': $ref: '#/components/responses/ServerError' security: - OAuth2: - tardis:admin:all - tardis:admin:read - tardis:admin:obfuscated - tardis:supervisor:read - tardis:hub:all - tardis:hub:read - tardis:hub:obfuscated - tardis:team:all - tardis:team:read - tardis:team:obfuscated - tardis:user:all - tardis:user:read - tardis:user:obfuscated post: tags: - ApiSpecification summary: Create an ApiSpecification description: Create an ApiSpecification. Creating and updating resources is asynchronous, which is why the status is given as an answer to a POST/PUT request, since it is possible that the resource to be created has not yet been processed at the time the response is created. If the status after creation is in state "Processing", the resource must be queried with GET to see whether it was created successfully or whether errors/warnings are written in the status. If the creation/update is incorrect, the processing status will be set to blocked. Otherwise to "failed". Status 201 means, that we accepted the request and there are no syntactic or semantic errors, but there can occur failures in the after processing. That will be shown in the status if you request the appropriate resource. operationId: createApiSpecification deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/ApiSpecificationCreateRequest' responses: '202': description: ACCEPTED content: application/json: schema: $ref: '#/components/schemas/ApiSpecificationResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '415': $ref: '#/components/responses/UnsupportedMediaType' '500': $ref: '#/components/responses/ServerError' security: - OAuth2: - tardis:admin:all - tardis:hub:all - tardis:team:all - tardis:user:all /apispecifications/{apiSpecificationId}/status: get: tags: - ApiSpecification summary: Find an existing ApiSpecification and return its status description: Find an existing ApiSpecification and return its status operationId: getApiSpecificationStatus parameters: - $ref: '#/components/parameters/ApiSpecificationId' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ResourceStatusResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '415': $ref: '#/components/responses/UnsupportedMediaType' '500': $ref: '#/components/responses/ServerError' security: - OAuth2: - tardis:admin:all - tardis:admin:read - tardis:admin:obfuscated - tardis:hub:all - tardis:hub:read - tardis:hub:obfuscated - tardis:team:all - tardis:team:read - tardis:team:obfuscated /apispecifications/{apiSpecificationId}: get: tags: - ApiSpecification summary: Find an existing ApiSpecification description: Find an existing ApiSpecification operationId: getApiSpecifications parameters: - $ref: '#/components/parameters/ApiSpecificationId' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ApiSpecificationResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '415': $ref: '#/components/responses/UnsupportedMediaType' '500': $ref: '#/components/responses/ServerError' security: - OAuth2: - tardis:admin:all - tardis:admin:read - tardis:admin:obfuscated - tardis:supervisor:read - tardis:hub:all - tardis:hub:read - tardis:hub:obfuscated - tardis:team:all - tardis:team:read - tardis:team:obfuscated - tardis:user:all - tardis:user:read - tardis:user:obfuscated put: tags: - ApiSpecification summary: Update an existing ApiSpecification description: Update an existing ApiSpecification. Creating and updating resources is asynchronous, which is why the status is given as an answer to a POST/PUT request, since it is possible that the resource to be created has not yet been processed at the time the response is created. If the status after creation is in state "Processing", the resource must be queried with GET to see whether it was created successfully or whether errors/warnings are written in the status. If the creation/update is incorrect, the processing status will be set to blocked. Otherwise to "failed". Status 201 means, that we accepted the request and there are no syntactic or semantic errors, but there can occur failures in the after processing. That will be shown in the status if you request the appropriate resource. operationId: updateApiSpecification parameters: - $ref: '#/components/parameters/ApiSpecificationId' requestBody: content: application/json: schema: $ref: '#/components/schemas/ApiSpecificationUpdateRequest' responses: '202': description: ACCEPTED content: application/json: schema: $ref: '#/components/schemas/ApiSpecificationResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '415': $ref: '#/components/responses/UnsupportedMediaType' '500': $ref: '#/components/responses/ServerError' security: - OAuth2: - tardis:admin:all - tardis:hub:all - tardis:team:all - tardis:user:all delete: tags: - ApiSpecification summary: Delete an ApiSpecification description: "**Important:** The deletion is done asynchronously to ensure that the resource was actually deleted, use this or the GET resource until you receive a 404 response. \nDelete an ApiSpecification\n" operationId: deleteApiSpecification parameters: - $ref: '#/components/parameters/ApiSpecificationId' responses: '204': description: DELETED '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '415': $ref: '#/components/responses/UnsupportedMediaType' '500': $ref: '#/components/responses/ServerError' security: - OAuth2: - tardis:admin:all - tardis:hub:all - tardis:team:all - tardis:user:all components: schemas: ApiSpecificationUpdateRequest: allOf: - $ref: '#/components/schemas/ApiSpecification' ApiSpecification: type: object required: - specification properties: specification: description: A valid API-specification according to the guidelines in openapi or swagger (deprecated) format type: object additionalProperties: true State: enum: - none - invalid - blocked - complete type: string Links: description: HATEOAS links for pagination type: object required: - self - next properties: self: type: string format: uri description: the URI for the current page for requested pagination next: type: string format: uri description: the URI for the next page for requested pagination, based on the requested limit value OverallStatus: description: Status of this resource and all its relevant sub-resources enum: - invalid - processing - failed - blocked - pending - complete - done - none type: string ApiSpecificationCreateRequest: allOf: - $ref: '#/components/schemas/ApiSpecification' - type: object properties: team: type: string example: hyperion description: This field is only used for hub-scoped access to control the target team of the resource. For everything else, it can be ignored ResourceStatusResponse: description: Response resource which contains information about the status of the resource and all its relevant sub-resources required: - state - processingState - overallStatus type: object properties: createdAt: type: string format: date-time description: Time when the resource was created processedAt: type: string format: date-time description: Time when the resource was last processed state: $ref: '#/components/schemas/State' processingState: $ref: '#/components/schemas/ProcessingState' overallStatus: $ref: '#/components/schemas/OverallStatus' errors: description: List of errors that resulted while processing this resource type: array items: $ref: '#/components/schemas/Problem' warnings: description: List of warnings that resulted while processing this resource type: array items: $ref: '#/components/schemas/Problem' infos: description: List of infos that resulted while processing this resource type: array items: $ref: '#/components/schemas/Problem' Problem: type: object required: - message - cause properties: resource: $ref: '#/components/schemas/ResourceRef' context: type: string message: type: string cause: type: string details: type: string StateInfo: type: object readOnly: true required: - message properties: message: type: string cause: type: string Error: description: RFC-7807 conform object sent on any error type: object required: - type - title properties: type: type: string title: type: string status: type: number detail: type: string instance: type: string errorCode: type: string fields: type: array items: $ref: '#/components/schemas/FieldProblem' ProcessingState: enum: - none - pending - processing - failed - done type: string ApiSpecificationResponse: type: object required: - id - name - category - vendorApi - specification - status properties: status: $ref: '#/components/schemas/Status' specification: description: A valid API-specification according to the guidelines in openapi or swagger (deprecated) format type: object additionalProperties: true id: description: Unique id of this resource. Can be used to directly address this specific resource type: string example: my-hub--my-team--eni-foo-v3 category: description: Category of this api type: string example: G_API vendorApi: description: Whether this api is an vendor api type: boolean name: description: Name of the created api (subset of id) type: string example: eni-foo-v3 ApiSpecificationListResponse: type: object required: - items properties: _links: $ref: '#/components/schemas/Links' items: type: array items: $ref: '#/components/schemas/ApiSpecificationResponse' Status: type: object readOnly: true required: - processingState - state - time properties: processingState: $ref: '#/components/schemas/ProcessingState' state: $ref: '#/components/schemas/State' errors: type: array items: $ref: '#/components/schemas/StateInfo' warnings: type: array items: $ref: '#/components/schemas/StateInfo' infos: type: array items: $ref: '#/components/schemas/StateInfo' ResourceRef: type: object readOnly: true required: - apiVersion - kind - name - namespace properties: apiVersion: type: string kind: type: string name: type: string namespace: type: string path: type: string FieldProblem: type: object required: - title properties: title: type: string detail: type: string path: type: string responses: UnsupportedMediaType: description: UNSUPPORTED_MEDIATYPE content: application/problem+json: schema: $ref: '#/components/schemas/Error' BadRequest: description: BAD_REQUEST content: application/problem+json: schema: $ref: '#/components/schemas/Error' NotFound: description: NOT_FOUND content: application/problem+json: schema: $ref: '#/components/schemas/Error' Forbidden: description: FORBIDDEN content: application/problem+json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: UNAUTHORIZED content: application/problem+json: schema: $ref: '#/components/schemas/Error' ServerError: description: SERVER_ERROR content: application/problem+json: schema: $ref: '#/components/schemas/Error' parameters: Sort: name: sort in: query description: list of fields to be used for sorting. Default is name required: false schema: type: string enum: - name Cursor: name: cursor in: query description: cursor to be used for pagination. If not provided, the first page will be returned. The cursor is a string that points to a page of data. required: false schema: type: string ApiSpecificationId: name: apiSpecificationId description: The unique id of this resource following the pattern group--team--resourceName in: path required: true schema: type: string Limit: name: limit description: page size requested by the consumer; must not be larger than the maximal page size in: query required: false schema: type: integer format: int32 minimum: 1 maximum: 20 default: 20 headers: XResultCount: description: Actual number of items returned in the response body for this page. schema: type: integer minimum: 0 XTotalCount: description: Total number of items matching criteria. schema: type: integer minimum: 0