146 lines
3.8 KiB
Elixir
146 lines
3.8 KiB
Elixir
defmodule WorkloadServiceWeb.Schemas.Task do
|
|
alias OpenApiSpex.Schema
|
|
|
|
defmodule PaginationMeta do
|
|
require OpenApiSpex
|
|
|
|
OpenApiSpex.schema(%{
|
|
title: "PaginationMeta",
|
|
type: :object,
|
|
properties: %{
|
|
total_count: %Schema{type: :integer},
|
|
total_pages: %Schema{type: :integer},
|
|
current_page: %Schema{type: :integer},
|
|
page_size: %Schema{type: :integer},
|
|
has_next: %Schema{type: :boolean},
|
|
has_prev: %Schema{type: :boolean}
|
|
}
|
|
})
|
|
end
|
|
|
|
defmodule Plan do
|
|
require OpenApiSpex
|
|
|
|
OpenApiSpex.schema(%{
|
|
title: "Plan",
|
|
type: :object,
|
|
properties: %{
|
|
plan_id: %Schema{type: :string},
|
|
plan_name: %Schema{type: :string},
|
|
premium: %Schema{type: :number},
|
|
coverage_details: %Schema{type: :string},
|
|
deductible: %Schema{type: :number, nullable: true},
|
|
coverage_limit: %Schema{type: :number, nullable: true}
|
|
}
|
|
})
|
|
end
|
|
|
|
defmodule TaskSummary do
|
|
require OpenApiSpex
|
|
|
|
OpenApiSpex.schema(%{
|
|
title: "TaskSummary",
|
|
type: :object,
|
|
properties: %{
|
|
id: %Schema{type: :string},
|
|
org_id: %Schema{type: :string},
|
|
application_id: %Schema{type: :string},
|
|
provider_id: %Schema{type: :string},
|
|
provider_name: %Schema{type: :string},
|
|
task_info: %Schema{type: :object},
|
|
status: %Schema{type: :string, enum: ["created", "draft", "approved", "completed"]},
|
|
created_at: %Schema{type: :string, format: :"date-time"}
|
|
}
|
|
})
|
|
end
|
|
|
|
defmodule TaskDetail do
|
|
require OpenApiSpex
|
|
|
|
OpenApiSpex.schema(%{
|
|
title: "TaskDetail",
|
|
type: :object,
|
|
properties: %{
|
|
id: %Schema{type: :string},
|
|
org_id: %Schema{type: :string},
|
|
application_id: %Schema{type: :string},
|
|
provider_id: %Schema{type: :string},
|
|
provider_name: %Schema{type: :string},
|
|
task_info: %Schema{type: :object},
|
|
submission: %Schema{type: :object, nullable: true},
|
|
attachments: %Schema{type: :array, items: %Schema{type: :string}},
|
|
status: %Schema{type: :string, enum: ["created", "draft", "approved", "completed"]},
|
|
version: %Schema{type: :integer},
|
|
created_at: %Schema{type: :string, format: :"date-time"},
|
|
updated_at: %Schema{type: :string, format: :"date-time"}
|
|
}
|
|
})
|
|
end
|
|
|
|
defmodule QuoteResponseRequest do
|
|
require OpenApiSpex
|
|
|
|
OpenApiSpex.schema(%{
|
|
title: "QuoteResponseRequest",
|
|
type: :object,
|
|
required: [:quote_id, :document_url],
|
|
properties: %{
|
|
quote_id: %Schema{type: :string},
|
|
plans: %Schema{type: :array, items: Plan},
|
|
valid_until: %Schema{type: :string, format: :date},
|
|
responded_by: %Schema{type: :string},
|
|
document_url: %Schema{type: :string},
|
|
document_data: %Schema{type: :object, additionalProperties: true}
|
|
}
|
|
})
|
|
end
|
|
|
|
defmodule ConfirmDeliveryRequest do
|
|
require OpenApiSpex
|
|
|
|
OpenApiSpex.schema(%{
|
|
title: "ConfirmDeliveryRequest",
|
|
type: :object,
|
|
properties: %{
|
|
delivery_confirmed_by: %Schema{type: :string}
|
|
}
|
|
})
|
|
end
|
|
|
|
defmodule TaskListResponse do
|
|
require OpenApiSpex
|
|
|
|
OpenApiSpex.schema(%{
|
|
title: "TaskListResponse",
|
|
type: :object,
|
|
properties: %{
|
|
data: %Schema{type: :array, items: TaskSummary},
|
|
meta: PaginationMeta
|
|
}
|
|
})
|
|
end
|
|
|
|
defmodule TaskDetailResponse do
|
|
require OpenApiSpex
|
|
|
|
OpenApiSpex.schema(%{
|
|
title: "TaskDetailResponse",
|
|
type: :object,
|
|
properties: %{
|
|
data: TaskDetail
|
|
}
|
|
})
|
|
end
|
|
|
|
defmodule ErrorResponse do
|
|
require OpenApiSpex
|
|
|
|
OpenApiSpex.schema(%{
|
|
title: "ErrorResponse",
|
|
type: :object,
|
|
properties: %{
|
|
error: %Schema{type: :string}
|
|
}
|
|
})
|
|
end
|
|
end |