diff --git a/apimartifacts/apis/azure-app-service-demo-api/apiInformation.json b/apimartifacts/apis/azure-app-service-demo-api/apiInformation.json new file mode 100644 index 0000000..dd2bd79 --- /dev/null +++ b/apimartifacts/apis/azure-app-service-demo-api/apiInformation.json @@ -0,0 +1,19 @@ +{ + "properties": { + "path": "appservice", + "apiRevision": "1", + "authenticationSettings": {}, + "description": "A comprehensive demo API showcasing FastAPI capabilities", + "isCurrent": true, + "displayName": "Azure App Service Demo API", + "protocols": [ + "http", + "https" + ], + "subscriptionKeyParameterNames": { + "header": "Ocp-Apim-Subscription-Key", + "query": "subscription-key" + }, + "subscriptionRequired": false + } +} \ No newline at end of file diff --git a/apimartifacts/apis/azure-app-service-demo-api/specification.yaml b/apimartifacts/apis/azure-app-service-demo-api/specification.yaml new file mode 100644 index 0000000..dbe6a77 --- /dev/null +++ b/apimartifacts/apis/azure-app-service-demo-api/specification.yaml @@ -0,0 +1,603 @@ +openapi: 3.0.1 +info: + title: Azure App Service Demo API + description: A comprehensive demo API showcasing FastAPI capabilities + version: '1.0' +servers: + - url: http://p-swe-apim-old.azure-api.net/appservice + - url: https://p-swe-apim-old.azure-api.net/appservice +paths: + /: + get: + tags: + - General + summary: Root + description: Root endpoint - Welcome message + operationId: root__get + responses: + '200': + description: Successful Response + content: + application/json: + schema: { } + /health: + get: + tags: + - General + summary: Health Check + description: Health check endpoint for monitoring + operationId: health_check_health_get + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/HealthResponse' + example: + status: string + timestamp: string + version: string + /api/quotes: + get: + tags: + - Quotes + summary: Get Quotes + description: "Get inspirational quotes. Optionally filter by category.\n\nCategories: motivation, innovation, programming" + operationId: get_quotes_api_quotes_get + parameters: + - name: category + in: query + description: Filter by category + schema: + title: Category + type: string + anyOf: + - type: string + - type: 'null' + description: Filter by category + responses: + '200': + description: Successful Response + content: + application/json: + schema: + title: Response Get Quotes Api Quotes Get + type: array + items: + $ref: '#/components/schemas/Quote' + example: + - id: string + text: string + author: string + category: string + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + example: + detail: + - loc: + - { } + msg: string + type: string + /api/quotes/random: + get: + tags: + - Quotes + summary: Get Random Quote + description: Get a random inspirational quote + operationId: get_random_quote_api_quotes_random_get + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/Quote' + example: + id: string + text: string + author: string + category: string + '/api/quotes/{quote_id}': + get: + tags: + - Quotes + summary: Get Quote By Id + description: Get a specific quote by ID + operationId: get_quote_by_id_api_quotes__quote_id__get + parameters: + - name: quote_id + in: path + required: true + schema: + title: Quote Id + type: string + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/Quote' + example: + id: string + text: string + author: string + category: string + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + example: + detail: + - loc: + - { } + msg: string + type: string + '/api/weather/{city}': + get: + tags: + - Weather + summary: Get Weather + description: Get mock weather data for a city + operationId: get_weather_api_weather__city__get + parameters: + - name: city + in: path + required: true + schema: + title: City + type: string + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/WeatherResponse' + example: + city: string + temperature: 0 + condition: string + humidity: 0 + timestamp: string + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + example: + detail: + - loc: + - { } + msg: string + type: string + /api/tasks: + get: + tags: + - Tasks + summary: Get Tasks + description: Get all tasks. Optionally filter by completion status. + operationId: get_tasks_api_tasks_get + parameters: + - name: completed + in: query + description: Filter by completion status + schema: + title: Completed + type: string + anyOf: + - type: boolean + - type: 'null' + description: Filter by completion status + responses: + '200': + description: Successful Response + content: + application/json: + schema: + title: Response Get Tasks Api Tasks Get + type: array + items: + $ref: '#/components/schemas/Task' + example: + - id: { } + title: string + description: { } + completed: false + created_at: { } + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + example: + detail: + - loc: + - { } + msg: string + type: string + post: + tags: + - Tasks + summary: Create Task + description: Create a new task + operationId: create_task_api_tasks_post + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Task' + example: + id: { } + title: string + description: { } + completed: false + created_at: { } + responses: + '201': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/Task' + example: + id: { } + title: string + description: { } + completed: false + created_at: { } + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + example: + detail: + - loc: + - { } + msg: string + type: string + '/api/tasks/{task_id}': + get: + tags: + - Tasks + summary: Get Task + description: Get a specific task by ID + operationId: get_task_api_tasks__task_id__get + parameters: + - name: task_id + in: path + required: true + schema: + title: Task Id + type: string + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/Task' + example: + id: { } + title: string + description: { } + completed: false + created_at: { } + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + example: + detail: + - loc: + - { } + msg: string + type: string + put: + tags: + - Tasks + summary: Update Task + description: Update an existing task + operationId: update_task_api_tasks__task_id__put + parameters: + - name: task_id + in: path + required: true + schema: + title: Task Id + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Task' + example: + id: { } + title: string + description: { } + completed: false + created_at: { } + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/Task' + example: + id: { } + title: string + description: { } + completed: false + created_at: { } + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + example: + detail: + - loc: + - { } + msg: string + type: string + delete: + tags: + - Tasks + summary: Delete Task + description: Delete a task + operationId: delete_task_api_tasks__task_id__delete + parameters: + - name: task_id + in: path + required: true + schema: + title: Task Id + type: string + responses: + '200': + description: Successful Response + content: + application/json: + schema: { } + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + example: + detail: + - loc: + - { } + msg: string + type: string + /api/random-user: + get: + tags: + - Utilities + summary: Get Random User + description: Generate a random user profile + operationId: get_random_user_api_random_user_get + responses: + '200': + description: Successful Response + content: + application/json: + schema: + $ref: '#/components/schemas/UserProfile' + example: + username: string + email: string + full_name: string + avatar_url: { } + /api/uuid: + get: + tags: + - Utilities + summary: Generate Uuid + description: Generate one or more UUIDs + operationId: generate_uuid_api_uuid_get + parameters: + - name: count + in: query + description: Number of UUIDs to generate + schema: + title: Count + maximum: 100.0 + minimum: 1.0 + type: integer + description: Number of UUIDs to generate + default: 1 + responses: + '200': + description: Successful Response + content: + application/json: + schema: { } + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' + example: + detail: + - loc: + - { } + msg: string + type: string + /api/stats: + get: + tags: + - General + summary: Get Stats + description: Get application statistics + operationId: get_stats_api_stats_get + responses: + '200': + description: Successful Response + content: + application/json: + schema: { } +components: + schemas: + HTTPValidationError: + title: HTTPValidationError + type: object + properties: + detail: + title: Detail + type: array + items: + $ref: '#/components/schemas/ValidationError' + HealthResponse: + title: HealthResponse + required: + - status + - timestamp + - version + type: object + properties: + status: + title: Status + type: string + timestamp: + title: Timestamp + type: string + version: + title: Version + type: string + Quote: + title: Quote + required: + - id + - text + - author + - category + type: object + properties: + id: + title: Id + type: string + text: + title: Text + type: string + author: + title: Author + type: string + category: + title: Category + type: string + Task: + title: Task + required: + - title + type: object + properties: + id: + title: Id + anyOf: + - type: string + - type: 'null' + title: + title: Title + maxLength: 100 + minLength: 1 + type: string + description: + title: Description + anyOf: + - type: string + - type: 'null' + completed: + title: Completed + type: boolean + default: false + created_at: + title: Created At + anyOf: + - type: string + - type: 'null' + UserProfile: + title: UserProfile + required: + - username + - email + - full_name + type: object + properties: + username: + title: Username + type: string + email: + title: Email + type: string + full_name: + title: Full Name + type: string + avatar_url: + title: Avatar Url + anyOf: + - type: string + - type: 'null' + ValidationError: + title: ValidationError + required: + - loc + - msg + - type + type: object + properties: + loc: + title: Location + type: array + items: + anyOf: + - type: string + - type: integer + msg: + title: Message + type: string + type: + title: Error Type + type: string + WeatherResponse: + title: WeatherResponse + required: + - city + - temperature + - condition + - humidity + - timestamp + type: object + properties: + city: + title: City + type: string + temperature: + title: Temperature + type: number + condition: + title: Condition + type: string + humidity: + title: Humidity + type: integer + timestamp: + title: Timestamp + type: string \ No newline at end of file diff --git a/apimartifacts/backends/WebApp_apiopsdemoapp/backendInformation.json b/apimartifacts/backends/WebApp_apiopsdemoapp/backendInformation.json new file mode 100644 index 0000000..4112b83 --- /dev/null +++ b/apimartifacts/backends/WebApp_apiopsdemoapp/backendInformation.json @@ -0,0 +1,8 @@ +{ + "properties": { + "description": "apiopsdemoapp", + "protocol": "http", + "resourceId": "https://management.azure.com/subscriptions/2baba5e9-93df-4094-9250-cdca14c9175a/resourceGroups/p-swe-rg-backend/providers/Microsoft.Web/sites/apiopsdemoapp", + "url": "https://apiopsdemoapp.azurewebsites.net" + } +} \ No newline at end of file diff --git a/apimartifacts/backends/appservice/backendInformation.json b/apimartifacts/backends/appservice/backendInformation.json new file mode 100644 index 0000000..dad6fcc --- /dev/null +++ b/apimartifacts/backends/appservice/backendInformation.json @@ -0,0 +1,16 @@ +{ + "properties": { + "credentials": { + "header": {}, + "query": {} + }, + "protocol": "http", + "resourceId": "https://management.azure.com/subscriptions/2baba5e9-93df-4094-9250-cdca14c9175a/resourceGroups/p-swe-rg-backend/providers/Microsoft.Web/sites/apiopsdemoapp", + "tls": { + "validateCertificateChain": true, + "validateCertificateName": true + }, + "type": "Single", + "url": "https://apiopsdemoapp.azurewebsites.net/" + } +} \ No newline at end of file diff --git a/apimartifacts/named values/apim-instance/namedValueInformation.json b/apimartifacts/named values/apim-instance/namedValueInformation.json new file mode 100644 index 0000000..a7a9ca9 --- /dev/null +++ b/apimartifacts/named values/apim-instance/namedValueInformation.json @@ -0,0 +1,8 @@ +{ + "properties": { + "displayName": "apim-instance", + "secret": false, + "tags": [], + "value": "old" + } +} \ No newline at end of file diff --git a/apimartifacts/products/appservice/apis/azure-app-service-demo-api/productApiInformation.json b/apimartifacts/products/appservice/apis/azure-app-service-demo-api/productApiInformation.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/apimartifacts/products/appservice/apis/azure-app-service-demo-api/productApiInformation.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/apimartifacts/products/appservice/groups/administrators/productGroupInformation.json b/apimartifacts/products/appservice/groups/administrators/productGroupInformation.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/apimartifacts/products/appservice/groups/administrators/productGroupInformation.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/apimartifacts/products/appservice/policy.xml b/apimartifacts/products/appservice/policy.xml new file mode 100644 index 0000000..f6c5c81 --- /dev/null +++ b/apimartifacts/products/appservice/policy.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + {{apim-instance}} + + + + + + + + \ No newline at end of file diff --git a/apimartifacts/products/appservice/productInformation.json b/apimartifacts/products/appservice/productInformation.json new file mode 100644 index 0000000..01a7896 --- /dev/null +++ b/apimartifacts/products/appservice/productInformation.json @@ -0,0 +1,8 @@ +{ + "properties": { + "displayName": "appservice", + "description": "apiops demo", + "state": "published", + "subscriptionRequired": false + } +} \ No newline at end of file diff --git a/apimartifacts/products/starter/policy.xml b/apimartifacts/products/starter/policy.xml index ea73b4d..3fe11d7 100644 --- a/apimartifacts/products/starter/policy.xml +++ b/apimartifacts/products/starter/policy.xml @@ -14,7 +14,6 @@ - @@ -23,7 +22,4 @@ - - - \ No newline at end of file diff --git a/apimartifacts/subscriptions/697a854e46346112509086bc/subscriptionInformation.json b/apimartifacts/subscriptions/697a854e46346112509086bc/subscriptionInformation.json new file mode 100644 index 0000000..b25d6ed --- /dev/null +++ b/apimartifacts/subscriptions/697a854e46346112509086bc/subscriptionInformation.json @@ -0,0 +1,8 @@ +{ + "properties": { + "scope": "/subscriptions/2baba5e9-93df-4094-9250-cdca14c9175a/resourceGroups/p-swe-apim-old/providers/Microsoft.ApiManagement/service/p-swe-apim-old/products/appservice", + "allowTracing": false, + "ownerId": "/subscriptions/2baba5e9-93df-4094-9250-cdca14c9175a/resourceGroups/p-swe-apim-old/providers/Microsoft.ApiManagement/service/p-swe-apim-old/users/1", + "state": "active" + } +} \ No newline at end of file diff --git a/apimartifacts/tags/General/tagInformation.json b/apimartifacts/tags/General/tagInformation.json new file mode 100644 index 0000000..d53f9d2 --- /dev/null +++ b/apimartifacts/tags/General/tagInformation.json @@ -0,0 +1,5 @@ +{ + "properties": { + "displayName": "General" + } +} \ No newline at end of file diff --git a/apimartifacts/tags/Quotes/tagInformation.json b/apimartifacts/tags/Quotes/tagInformation.json new file mode 100644 index 0000000..ca86bca --- /dev/null +++ b/apimartifacts/tags/Quotes/tagInformation.json @@ -0,0 +1,5 @@ +{ + "properties": { + "displayName": "Quotes" + } +} \ No newline at end of file diff --git a/apimartifacts/tags/Tasks/tagInformation.json b/apimartifacts/tags/Tasks/tagInformation.json new file mode 100644 index 0000000..6a2e579 --- /dev/null +++ b/apimartifacts/tags/Tasks/tagInformation.json @@ -0,0 +1,5 @@ +{ + "properties": { + "displayName": "Tasks" + } +} \ No newline at end of file diff --git a/apimartifacts/tags/Utilities/tagInformation.json b/apimartifacts/tags/Utilities/tagInformation.json new file mode 100644 index 0000000..0a81347 --- /dev/null +++ b/apimartifacts/tags/Utilities/tagInformation.json @@ -0,0 +1,5 @@ +{ + "properties": { + "displayName": "Utilities" + } +} \ No newline at end of file diff --git a/apimartifacts/tags/Weather/tagInformation.json b/apimartifacts/tags/Weather/tagInformation.json new file mode 100644 index 0000000..b63dbf0 --- /dev/null +++ b/apimartifacts/tags/Weather/tagInformation.json @@ -0,0 +1,5 @@ +{ + "properties": { + "displayName": "Weather" + } +} \ No newline at end of file