@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api ETSI GS MEC 010-2 - Part 2: Application lifecycle, rules and requirements management
@base https://localhost/app_pkgm/v1
@version 2.1.1
@endpoints 16
@toc app_packages(8), subscriptions(4), user_defined_notification(1), onboarded_app_packages(3)

@group app_packages
@endpoint POST /app_packages
@required {appPkgName: str, appPkgPath: str, appPkgVersion: str, checksum: map{algorithm!: str, hash!: str}}
@optional {appProvider: str, userDefinedData: map}
@returns(201)
@errors {400, 401, 403, 404, 406, 429}

@endpoint GET /app_packages
@optional {filter: str, all_fields: str, fields: str, exclude_fields: str, exclude_default: str}
@returns(200)
@errors {400, 401, 403, 404, 406, 429}

@endpoint GET /app_packages/{appPkgId}
@returns(200) {id: str, appDId: str, appProvider: str, appName: str, appSoftwareVersion: str, appDVersion: str, checksum: map{algorithm: str, hash: str}, softwareImages: any, additionalArtifacts: any, onboardingState: str(enum), operationalState: str, usageState: str(enum), userDefinedData: map, _links: map{self: map{href: str(uri)}, appD: map{href: str(uri)}, appPkgContent: map{href: str(uri)}}}
@errors {400, 401, 403, 404, 406, 429}

@endpoint DELETE /app_packages/{appPkgId}
@returns(204)
@errors {400, 401, 403, 404, 406, 429}

@endpoint PATCH /app_packages/{appPkgId}
@required {operationState: str(DISABLED/ENABLED)}
@returns(200) {operationState: str}
@errors {400, 401, 403, 404, 406, 409, 429}

@endgroup

@group subscriptions
@endpoint POST /subscriptions
@required {callbackUri: str(uri), subsctiptionType: str(AppPackageOnBoarding/AppPacakgeOperationChange/AppPackageDeletion)}
@optional {appPkgFilter: [str]}
@returns(201) {id: str, subscriptionType: str, callbackUri: str(uri), _links: map{self: map{href: str(uri)}}}
@errors {400, 401, 403, 404, 406, 429}

@endpoint GET /subscriptions
@returns(200) {_links: map{self: map{href: str(uri)}, subscriptions: [map]}}
@errors {400, 401, 403, 404, 406, 429}

@endpoint GET /subscriptions/{subscriptionId}
@returns(200) {id: str, subscriptionType: str, callbackUri: str(uri), _links: map{self: map{href: str(uri)}}}
@errors {400, 401, 403, 404, 406, 429}

@endpoint DELETE /subscriptions/{subscriptionId}
@returns(204)
@errors {401, 403, 404, 429}

@endgroup

@group user_defined_notification
@endpoint POST /user_defined_notification
@required {id: str, notificationType: str(AppPackageOnBoarded/AppPacakgeEnabled/AppPacakgeDisabled/AppPackageDeleted), subscriptionId: str, timeStamp: map{nanoSeconds!: int(Uint32), seconds!: int(Uint32)}, appPkgId: str, appDId: str, operationalState: str(DISABLED/ENABLED), _links: map{subscription!: map}}
@returns(204)
@errors {401, 403, 404, 429}

@endgroup

@group app_packages
@endpoint GET /app_packages/{appPkgId}/appd
@optional {filter: str, all_fields: str, fields: str, exclude_fields: str, exclude_default: str}
@returns(200)
@errors {400, 401, 403, 404, 406, 429}

@endgroup

@group onboarded_app_packages
@endpoint GET /onboarded_app_packages/{appDId}/appd
@optional {filter: str, all_fields: str, fields: str, exclude_fields: str, exclude_default: str}
@returns(200)
@errors {400, 401, 403, 404, 406, 429}

@endgroup

@group app_packages
@endpoint GET /app_packages/{appPkgId}/package_content
@returns(200)
@returns(206)
@errors {400, 401, 403, 404, 406, 416, 429}

@endpoint PUT /app_packages/{appPkgId}/package_content
@returns(202)
@errors {400, 401, 403, 404, 406, 409, 429}

@endgroup

@group onboarded_app_packages
@endpoint GET /onboarded_app_packages/{appDId}/package_content
@returns(200)
@returns(206)
@errors {400, 401, 403, 404, 406, 416, 429}

@endpoint PUT /onboarded_app_packages/{appDId}/package_content
@returns(202)
@errors {400, 401, 403, 404, 406, 409, 429}

@endgroup

@end
