Open ravi-prakash-v opened 2 years ago
{
"context": {
"domain": "dsep:jobs",
"country": "IND",
"city": "string",
"action": "on_search",
"core_version": "0.9.3",
"bap_id": "mock_bap.com",
"bap_uri": "https://mock_bap.com/protocol",
"transaction_id": "string",
"message_id": "string",
"timestamp": "2021-12-22T11:53:29.434Z"
},
"message": {
"intent": {
"provider": {
"locations": [
{
"gps":"lat,lon",
"city": {
"code": "string"
},
"country": {
"code": "string"
}
}
]
},
"item": {
"descriptor": {
"name":"Javascript Developer"
},
"price": {
"currency": "INR",
"minimum_value": "expected salary range",
"maximum_value": "expected salary range"
},
"time": {
"duration": "P3Y"
},
"tags": {
"skills": "comma separated list of skill keywords"
}
},
"category": {
"id": "category_id",
"descriptor": {
"name": "Developer"
}
}
}
}
}
message.intent.provider.locations
will have options to express the intent of where the job offers should be from. The GPS coordinate can be passed in gps
if that level of location accuracy is required. The STD code of the city can be passed in city.code
to get results from a city. ISO country codes can be used in country.code
if required.
message.intent.item.descriptor.name
can be used to search using the job role title.
message.intent.item.time.duration
property is used give the experience of the candidate.
message.intent.item.tags.skills
can be used to pass on a comma separated list of skill keywords which can be used for fetching job offers matching the skills.
message.intent.category
can be used to specify the category of the job offers. id
can be used if the category_id is known and descriptor.name
can be used to search with category name.
Here I have added part-time employment as well.
{
"context": {
"domain": "dsep:jobs",
"country": "IND",
"city": "string",
"action": "on_search",
"core_version": "0.9.3",
"bap_id": "mock_bap.com",
"bap_uri": "https://mock_bap.com/protocol",
"bpp_id": "mock_bpp.com",
"bpp_uri": "https://mock_bpp.com/protocol",
"transaction_id": "string",
"message_id": "string",
"timestamp": "2021-12-22T11:53:29.434Z"
},
"message": {
"catalog": {
"bpp/providers": [
{
"id": "ABC",
"descriptor": {
"name": "ABC Consultancy Services"
},
"categories": [
{
"id": "fulltime",
"descriptor": {
"name": "Full-time employment",
"short_desc": "A full-time job is employment in which a person works a minimum number of hours defined as such by their employer."
}
},
{
"id": "internship",
"descriptor": {
"name": "Internship",
"short_desc": "An internship is a period of work experience offered by an organization for a limited period of time."
}
},
{
"id": "parttime",
"descriptor": {
"name": "Part-time employment",
"short_desc": "A part-time job is a form of employment that carries fewer hours per week than a full-time job."
}
},
{
"id": "it",
"descriptor": {
"name": "IT",
"short_desc": "Information Technology industry which comprises information technology services, consulting, and outsourcing."
}
},
{
"id": "developer",
"parent_category_id": "it",
"descriptor": {
"name": "Developer",
"short_desc": "A computer programmer, sometimes called a software developer, a programmer or more recently a coder (especially in more informal contexts), is a person who creates computer software."
}
},
{
"id": "devops",
"parent_category_id": "it",
"descriptor": {
"name": "DevOps",
"short_desc": "DevOps is a set of practices that combines software development (Dev) and IT operations (Ops)."
}
}
],
"locations": [
{
"id": "siruseri",
"descriptor": {
"name": "ABC Siruseri",
"images": [
"string"
]
},
"gps": "lat,long",
"address": {
"name": "ABC Siruseri",
"building": "Test building",
"street": "Test street",
"locality": "Siruseri",
"city": "Chennai",
"state": "Tamil Nadu",
"country": "IND",
"area_code": "695030"
}
},
{
"id": "elec_city",
"descriptor": {
"name": "ABC Bangalore",
"images": [
"string"
]
},
"gps": "lat,long",
"address": {
"name": "ABC Bangalore",
"building": "Test building",
"street": "Test street",
"locality": "Electronic City",
"city": "Bangalore",
"state": "Karnataka",
"country": "IND",
"area_code": "695030"
}
}
],
"items": [
{
"id": "js_dev",
"descriptor": {
"name": "Senior Javascript Developer",
"short_desc": "Summary of role",
"long_desc": "Job description"
},
"price": {
"currency": "INR",
"offered_value": "CTC"
},
"category_ids": [
"developer",
"full-time"
],
"location_id": "siruseri",
"time": {
"label": "experience",
"duration": "P5Y"
},
"recommended": true,
"tags": {
"skills": "js,nodejs,angular,react"
}
},
{
"id": "dev_ops_engg",
"descriptor": {
"name": "Senior DevOps Engineer",
"short_desc": "Summary of role",
"long_desc": "Job description"
},
"price": {
"currency": "INR",
"offered_value": "CTC"
},
"category_ids": [
"devops",
"full-time"
],
"location_id": "elec_city",
"time": {
"label": "experience",
"duration": "P5Y"
},
"recommended": true,
"tags": {
"skills": "ci/cd,github actions,aws,kubernetes,docker,gcp"
}
}
]
}
]
}
}
}
message.catalog.bpp/providers.descriptor
will have details of the employer that has the job opening.
message.catalog.bpp/providers.categories
will have categories that the job offers in the catalog can belong to. Full-time, part-time and internship can be top level categories. Top level sectors like IT, Manufacturing etc will be categories with sub categories. Here in the above example devops and developer are subcategories to IT.
message.catalog.bpp/providers.locations
will have the various locations or offices of the employer where there are job openings.
message.catalog.bpp/providers.items
will have all the job openings for the employer. descriptor.name
will have the job title, descriptor.short_desc
can be used to give a summary of the role and descriptor.long_desc
can be used to give the full job description. price.offered_value
can have the salary offered for the role. time.duration
can be used to represent the minimum experience that the role requires. location_id
can be used to specify which office the job offer is for. This will be a reference to an object in message.catalog.bpp/providers.locations
array. category_ids
will have the categories to which the job offer belongs to. The skills required from the job can be given in tags.skills
as comma separated keywords.
{
"context": {
"domain": "dsep:courses",
"country": "IND",
"city": "string",
"action": "on_search",
"core_version": "0.9.3",
"bap_id": "mock_bap.com",
"bap_uri": "https://mock_bap.com/protocol",
"transaction_id": "string",
"message_id": "string",
"timestamp": "2021-12-22T11:53:29.434Z"
},
"message": {
"intent": {
"provider": {
"locations": [
{
"gps":"lat,lon",
"city": {
"code": "string"
},
"country": {
"code": "string"
}
}
]
},
"item": {
"descriptor": {
"name":"Data Science"
},
"price": {
"currency": "INR",
"minimum_value": "course fees range",
"maximum_value": "course fees range"
},
"tags": {
"skills": "comma separated list of skills"
}
},
"category": {
"id": "offline",
"descriptor": {
"name": "computer science"
}
}
}
}
}
message.intent.provider.locations
will have options to express the intent of where the courses should be from. The GPS coordinate can be passed in gps
if that level of location accuracy is required. The STD code of the city can be passed in city.code
to get results from a city. ISO country codes can be used in country.code
if required. This is only applicable in case of offline courses.
message.intent.item.descriptor.name
can be used to search using the course title.
message.intent.item.price
can be used to search using the price range of the course.
message.intent.item.tags.skills
can be used to pass on a comma separated list of skill keywords which can be used for fetching courses matching the skills.
message.intent.category
can be used to specify the category of the courses. id
can be used if the category_id is known and descriptor.name
can be used to search with category name. For example id
can be given as offline
to return only offline courses.
Here I have split online courses into synchronous and asynchronous as well.
{
"context": {
"domain": "dsep:courses",
"country": "IND",
"city": "string",
"action": "on_search",
"core_version": "0.9.3",
"bap_id": "mock_bap.com",
"bap_uri": "https://mock_bap.com/protocol",
"bpp_id": "mock_bpp.com",
"bpp_uri": "https://mock_bpp.com/protocol",
"transaction_id": "string",
"message_id": "string",
"timestamp": "2021-12-22T11:53:29.434Z"
},
"message": {
"catalog": {
"bpp/providers": [
{
"id": "edu_hub",
"descriptor": {
"name": "Education Hub"
},
"categories": [
{
"id": "online_sync",
"descriptor": {
"name": "Realtime online courses",
"short_desc": "Online courses where you can interact with the instructor in realtime."
}
},
{
"id": "online_async",
"descriptor": {
"name": "Recorded online courses",
"short_desc": "Recorded online courses where interactions with the instructor is asynchronous."
}
},
{
"id": "offline",
"descriptor": {
"name": "Offline courses",
"short_desc": "Offline courses at a specific location and time."
}
},
{
"id": "cs",
"descriptor": {
"name": "Computer Science",
"short_desc": "Computer science is the study of computation, automation, and information."
}
},
{
"id": "data_science",
"parent_category_id": "cs",
"descriptor": {
"name": "IT",
"short_desc": "Data science is an interdisciplinary field that uses scientific methods, processes, algorithms and systems to extract knowledge and insights from noisy, structured and unstructured data, and apply knowledge and actionable insights from data across a broad range of application domains."
}
},
{
"id": "python",
"parent_category_id": "cs",
"descriptor": {
"name": "Python Programming",
"short_desc": "Python is an interpreted high-level general-purpose programming language."
}
}
],
"locations": [
{
"id": "iit-m",
"descriptor": {
"name": "IIT Madras",
"images": [
"string"
]
},
"gps": "lat,long",
"address": {
"name": "IIT Madras",
"building": "Himalaya Building",
"street": "Test street",
"locality": "Mylapur",
"city": "Chennai",
"state": "Tamil Nadu",
"country": "IND",
"area_code": "695030"
}
}
],
"items": [
{
"id": "ds_intro",
"descriptor": {
"name": "Intro to Data Science",
"short_desc": "Summary of course contents",
"long_desc": "Course details"
},
"price": {
"currency": "INR",
"value": "price of course"
},
"category_ids": [
"data_science",
"offline"
],
"location_id": "iit-m",
"time": {
"duration": "P2M",
"range": {
"start": "2021-12-25T09:00:00.000Z",
"end": "2022-02-25T23:59:00.000Z"
}
},
"recommended": true,
"tags": {
"skills": "Data Science,Deep Learning,Machine Learning,Big Data,Data Mining,Github,Python Programming,Jupyter notebooks,Rstudio,Methodology,Data Analysis,Pandas"
}
},
{
"id": "python3",
"descriptor": {
"name": "Python 3 Programming",
"short_desc": "Summary of course contents",
"long_desc": "Course details"
},
"price": {
"currency": "INR",
"value": "price of course"
},
"category_ids": [
"python",
"online_sync"
],
"time": {
"duration": "20D",
"range": {
"start": "2021-12-25T09:00:00.000Z",
"end": "2022-01-03T23:59:00.000Z"
}
},
"recommended": true,
"tags": {
"skills": "Json,Computer Programming,Python Programming,Sorting"
}
},
{
"id": "python_crash_course",
"descriptor": {
"name": "Crash Course on Python",
"short_desc": "Summary of course contents",
"long_desc": "Course details"
},
"price": {
"currency": "INR",
"value": "price of course"
},
"category_ids": [
"python",
"online_async"
],
"time": {
"duration": "10H"
},
"recommended": true,
"tags": {
"skills": "Basic Python Data Structures,Fundamental Programming Concepts,Basic Python Syntax,Python Programming,Object-Oriented Programming (OOP)"
}
}
]
}
]
}
}
}
message.catalog.bpp/providers.categories
will have categories that the courses in the catalog can belong to. Offline courses, recorded/static online courses and real time video courses can be top level categories.
message.catalog.bpp/providers.locations
will be used to specify the location details of offline courses.
message.catalog.bpp/providers.items
will have all the courses in the catalog. descriptor.name
will have the course name, descriptor.short_desc
can be used to give a summary of the course and descriptor.long_desc
can be used to give the course details. price.value
will have the price of the course. time.duration
can be used to specify the duration of the videos or approximate time it takes to complete an asynchronous online course. time.duration
in the case of offline and real time online courses will be the total duration of the course. For these 2 cases, the time.range
object can be used to specify the starting and ending date of the course . location_id
can be used to specify the location in case of offline courses. This will be a reference to an object in message.catalog.bpp/providers.locations array
. category_ids
will have the categories to which the course belongs to. The skills that can be learned from the course can be given in tags.skills
as comma separated keywords.
{
"context": {
"domain": "dsep:consultation",
"country": "IND",
"city": "string",
"action": "on_search",
"core_version": "0.9.3",
"bap_id": "mock_bap.com",
"bap_uri": "https://mock_bap.com/protocol",
"transaction_id": "string",
"message_id": "string",
"timestamp": "2021-12-22T11:53:29.434Z"
},
"message": {
"intent": {
"provider": {
"locations": [
{
"gps":"lat,lon",
"city": {
"code": "string"
},
"country": {
"code": "string"
}
}
]
},
"item": {
"descriptor": {
"name":"Service name"
},
"price": {
"currency": "INR",
"minimum_value": "consultation fee range",
"maximum_value": "consultation fee range"
},
"time": {
"range": {
"start": "2021-12-25T09:00:00.000Z",
"end": "2021-12-25T12:30:00.000Z"
}
},
"tags": {
"skills": "comma separated list of skills"
}
},
"category": {
"id": "tutoring"
}
}
}
}
message.intent.provider.locations
will have options to express the intent of where the consultation service is required. The GPS coordinate can be passed in gps
if that level of location accuracy is required. The STD code of the city can be passed in city.code
to get results from a city. ISO country codes can be used in country.code
if required.
message.intent.item.descriptor.name
can be used to search using the consultation service name.
message.intent.item.price
can be used to search using the price range of the service.
message.intent.item.time.range
can be used to express the time range between which the service is required.
message.intent.item.tags.skills
can be used to pass on a comma separated list of skill keywords which can be used for fetching consultation services matching the skills.
message.intent.category
can be used to specify the category of the service. id can be used if the category_id is known and descriptor.name can be used to search with category name. For example id can be given as tutoring to return only tutoring services.
{
"context": {
"domain": "dsep:consultation",
"country": "IND",
"city": "string",
"action": "on_search",
"core_version": "0.9.3",
"bap_id": "mock_bap.com",
"bap_uri": "https://mock_bap.com/protocol",
"bpp_id": "mock_bpp.com",
"bpp_uri": "https://mock_bpp.com/protocol",
"transaction_id": "string",
"message_id": "string",
"timestamp": "2021-12-22T11:53:29.434Z"
},
"message": {
"catalog": {
"bpp/providers": [
{
"id": "consultation_services",
"descriptor": {
"name": "Consultation Services"
},
"categories": [
{
"id": "tutoring",
"descriptor": {
"name": "Tutoring",
"short_desc": "Recurring classes for a duration."
}
},
{
"id": "mentoring",
"descriptor": {
"name": "Mentoring",
"short_desc": "Single talk on a topic/skill."
}
},
{
"id": "cs",
"descriptor": {
"name": "Computer Science",
"short_desc": "Computer science is the study of computation, automation, and information."
}
},
{
"id": "english_language",
"descriptor": {
"name": "English Language",
"short_desc": "Skills based on English Language."
}
},
{
"id": "python",
"parent_category_id": "cs",
"descriptor": {
"name": "Python Programming",
"short_desc": "Python is an interpreted high-level general-purpose programming language."
}
}
],
"locations": [
{
"id": "iit-m",
"descriptor": {
"name": "IIT Madras",
"images": [
"string"
]
},
"gps": "lat,long",
"address": {
"name": "IIT Madras",
"building": "Himalaya Building",
"street": "Test street",
"locality": "Mylapur",
"city": "Chennai",
"state": "Tamil Nadu",
"country": "IND",
"area_code": "695030"
}
}
],
"items": [
{
"id": "ielts",
"descriptor": {
"name": "IELTS Preparation Specialization",
"short_desc": "Summary of consultation",
"long_desc": "Consultation details"
},
"price": {
"currency": "INR",
"value": "price of consultation"
},
"category_ids": [
"english_language",
"mentoring"
],
"location_id": "iit-m",
"time": {
"duration": "P3H",
"range": {
"start": "2021-12-25T09:00:00.000Z",
"end": "2021-12-25T12:30:00.000Z"
}
},
"recommended": true,
"tags": {
"skills": "Professional,Presentation,Writing,Communication,Listening,Speech"
}
},
{
"id": "applied_data_science_python",
"descriptor": {
"name": "Applied Data Science with Python Specialization",
"short_desc": "Summary of consultation",
"long_desc": "Consultation details"
},
"price": {
"currency": "INR",
"value": "price of consultation"
},
"category_ids": [
"python",
"tutoring"
],
"location_id": "iit-m",
"time": {
"duration": "1H",
"schedule": {
"times": [
"2021-12-25T09:00:00.000Z",
"2021-12-26T09:00:00.000Z",
"2021-12-27T09:00:00.000Z",
"2021-12-28T09:00:00.000Z",
"2021-12-29T09:00:00.000Z"
]
}
},
"recommended": true,
"tags": {
"skills": "Text Mining,Python Programming,Pandas,Matplotlib,Numpy,Data Cleansing,Data Virtualization,Data Visualization (DataViz),Machine Learning (ML) Algorithms,Machine Learning,Scikit-Learn,Natural Language Toolkit (NLTK)"
}
}
]
}
]
}
}
}
message.catalog.bpp/providers.categories
will have categories that the services in the catalog can belong to. Mentoring and tutoring can be top level categories.
message.catalog.bpp/providers.locations
will be used to specify the location details of service.
message.catalog.bpp/providers.items
will have all the services in the catalog. descriptor.name
will have the service name, descriptor.short_desc
can be used to give a summary of the service and descriptor.long_desc can be used to give the consultation details. price.value
will have the price of the service. time.duration
can be used to specify the duration of consultation service. In case of single event consultation service, the start and end time of the service can be given in the time.range
object. time.schedule.times
can be used to provide the times for a repeating tutoring consultation service. location_id
can be used to specify the location of the service. This will be a reference to an object in message.catalog.bpp/providers.locations
array. category_ids
will have the categories to which the service belongs to. The skills that are associated with the service can be given in tags.skills
as comma separated keywords.
@techframewirk bap_id, bap_uri, transaction_id
are not required in search
and on_search
@techframewirk please remove price
attribute in intent
.
@techframewirk
bap_id, bap_uri, transaction_id
are not required insearch
andon_search
As search is initiated by the BAP won't bap_id
and bap_uri
be required? Will transaction_id
be removed in just search, on_search? This change is not part of 0.9.3 specs.
{
"context": {
"domain": "dsep:jobs",
"country": "IND",
"city": "string",
"action": "on_search",
"core_version": "0.9.3",
"bap_id": "mock_bap.com",
"bap_uri": "https://mock_bap.com/protocol",
"transaction_id": "string",
"message_id": "string",
"timestamp": "2021-12-22T11:53:29.434Z"
},
"message": {
"intent": {
"provider": {
"locations": [
{
"gps":"lat,lon",
"city": {
"code": "string"
},
"country": {
"code": "string"
}
}
]
},
"item": {
"descriptor": {
"name":"Javascript Developer"
},
"time": {
"duration": "P3Y"
},
"tags": {
"skills": "comma separated list of skill keywords"
}
},
"category": {
"id": "category_id",
"descriptor": {
"name": "Developer"
}
}
}
}
}
message.intent.provider.locations
will have options to express the intent of where the job offers should be from. The GPS coordinate can be passed in gps
if that level of location accuracy is required. The STD code of the city can be passed in city.code
to get results from a city. ISO country codes can be used in country.code
if required.
message.intent.item.descriptor.name
can be used to search using the job role title.
message.intent.item.time.duration
property is used give the experience of the candidate.
message.intent.item.tags.skills
can be used to pass on a comma separated list of skill keywords which can be used for fetching job offers matching the skills.
message.intent.category
can be used to specify the category of the job offers. id
can be used if the category_id is known and descriptor.name
can be used to search with category name.
Here I have added part-time employment as well.
{
"context": {
"domain": "dsep:jobs",
"country": "IND",
"city": "string",
"action": "on_search",
"core_version": "0.9.3",
"bap_id": "mock_bap.com",
"bap_uri": "https://mock_bap.com/protocol",
"bpp_id": "mock_bpp.com",
"bpp_uri": "https://mock_bpp.com/protocol",
"transaction_id": "string",
"message_id": "string",
"timestamp": "2021-12-22T11:53:29.434Z"
},
"message": {
"catalog": {
"bpp/providers": [
{
"id": "ABC",
"descriptor": {
"name": "ABC Consultancy Services"
},
"categories": [
{
"id": "fulltime",
"descriptor": {
"name": "Full-time employment",
"short_desc": "A full-time job is employment in which a person works a minimum number of hours defined as such by their employer."
}
},
{
"id": "internship",
"descriptor": {
"name": "Internship",
"short_desc": "An internship is a period of work experience offered by an organization for a limited period of time."
}
},
{
"id": "parttime",
"descriptor": {
"name": "Part-time employment",
"short_desc": "A part-time job is a form of employment that carries fewer hours per week than a full-time job."
}
},
{
"id": "it",
"descriptor": {
"name": "IT",
"short_desc": "Information Technology industry which comprises information technology services, consulting, and outsourcing."
}
},
{
"id": "developer",
"parent_category_id": "it",
"descriptor": {
"name": "Developer",
"short_desc": "A computer programmer, sometimes called a software developer, a programmer or more recently a coder (especially in more informal contexts), is a person who creates computer software."
}
},
{
"id": "devops",
"parent_category_id": "it",
"descriptor": {
"name": "DevOps",
"short_desc": "DevOps is a set of practices that combines software development (Dev) and IT operations (Ops)."
}
}
],
"locations": [
{
"id": "siruseri",
"descriptor": {
"name": "ABC Siruseri",
"images": [
"string"
]
},
"gps": "lat,long",
"address": {
"name": "ABC Siruseri",
"building": "Test building",
"street": "Test street",
"locality": "Siruseri",
"city": "Chennai",
"state": "Tamil Nadu",
"country": "IND",
"area_code": "695030"
}
},
{
"id": "elec_city",
"descriptor": {
"name": "ABC Bangalore",
"images": [
"string"
]
},
"gps": "lat,long",
"address": {
"name": "ABC Bangalore",
"building": "Test building",
"street": "Test street",
"locality": "Electronic City",
"city": "Bangalore",
"state": "Karnataka",
"country": "IND",
"area_code": "695030"
}
}
],
"items": [
{
"id": "js_dev",
"descriptor": {
"name": "Senior Javascript Developer",
"short_desc": "Summary of role",
"long_desc": "Job description"
},
"price": {
"currency": "INR",
"offered_value": "CTC"
},
"category_ids": [
"developer",
"full-time"
],
"location_id": "siruseri",
"time": {
"label": "experience",
"duration": "P5Y"
},
"recommended": true,
"tags": {
"skills": "js,nodejs,angular,react"
}
},
{
"id": "dev_ops_engg",
"descriptor": {
"name": "Senior DevOps Engineer",
"short_desc": "Summary of role",
"long_desc": "Job description"
},
"price": {
"currency": "INR",
"offered_value": "CTC"
},
"category_ids": [
"devops",
"full-time"
],
"location_id": "elec_city",
"time": {
"label": "experience",
"duration": "P5Y"
},
"recommended": true,
"tags": {
"skills": "ci/cd,github actions,aws,kubernetes,docker,gcp"
}
}
]
}
]
}
}
}
message.catalog.bpp/providers.descriptor
will have details of the employer that has the job opening.
message.catalog.bpp/providers.categories
will have categories that the job offers in the catalog can belong to. Full-time, part-time and internship can be top level categories. Top level sectors like IT, Manufacturing etc will be categories with sub categories. Here in the above example devops and developer are subcategories to IT.
message.catalog.bpp/providers.locations
will have the various locations or offices of the employer where there are job openings.
message.catalog.bpp/providers.items
will have all the job openings for the employer. descriptor.name
will have the job title, descriptor.short_desc
can be used to give a summary of the role and descriptor.long_desc
can be used to give the full job description. price.offered_value
can have the salary offered for the role. time.duration
can be used to represent the minimum experience that the role requires. location_id
can be used to specify which office the job offer is for. This will be a reference to an object in message.catalog.bpp/providers.locations
array. category_ids
will have the categories to which the job offer belongs to. The skills required from the job can be given in tags.skills
as comma separated keywords.
{
"context": {
"domain": "dsep:courses",
"country": "IND",
"city": "string",
"action": "on_search",
"core_version": "0.9.3",
"bap_id": "mock_bap.com",
"bap_uri": "https://mock_bap.com/protocol",
"transaction_id": "string",
"message_id": "string",
"timestamp": "2021-12-22T11:53:29.434Z"
},
"message": {
"intent": {
"provider": {
"locations": [
{
"gps":"lat,lon",
"city": {
"code": "string"
},
"country": {
"code": "string"
}
}
]
},
"item": {
"descriptor": {
"name":"Data Science"
},
"tags": {
"skills": "comma separated list of skills"
}
},
"category": {
"id": "offline",
"descriptor": {
"name": "computer science"
}
}
}
}
}
message.intent.provider.locations
will have options to express the intent of where the courses should be from. The GPS coordinate can be passed in gps
if that level of location accuracy is required. The STD code of the city can be passed in city.code
to get results from a city. ISO country codes can be used in country.code
if required. This is only applicable in case of offline courses.
message.intent.item.descriptor.name
can be used to search using the course title.
message.intent.item.tags.skills
can be used to pass on a comma separated list of skill keywords which can be used for fetching courses matching the skills.
message.intent.category
can be used to specify the category of the courses. id
can be used if the category_id is known and descriptor.name
can be used to search with category name. For example id
can be given as offline
to return only offline courses.
Here I have split online courses into synchronous and asynchronous as well.
{
"context": {
"domain": "dsep:courses",
"country": "IND",
"city": "string",
"action": "on_search",
"core_version": "0.9.3",
"bap_id": "mock_bap.com",
"bap_uri": "https://mock_bap.com/protocol",
"bpp_id": "mock_bpp.com",
"bpp_uri": "https://mock_bpp.com/protocol",
"transaction_id": "string",
"message_id": "string",
"timestamp": "2021-12-22T11:53:29.434Z"
},
"message": {
"catalog": {
"bpp/providers": [
{
"id": "edu_hub",
"descriptor": {
"name": "Education Hub"
},
"categories": [
{
"id": "online_sync",
"descriptor": {
"name": "Realtime online courses",
"short_desc": "Online courses where you can interact with the instructor in realtime."
}
},
{
"id": "online_async",
"descriptor": {
"name": "Recorded online courses",
"short_desc": "Recorded online courses where interactions with the instructor is asynchronous."
}
},
{
"id": "offline",
"descriptor": {
"name": "Offline courses",
"short_desc": "Offline courses at a specific location and time."
}
},
{
"id": "cs",
"descriptor": {
"name": "Computer Science",
"short_desc": "Computer science is the study of computation, automation, and information."
}
},
{
"id": "data_science",
"parent_category_id": "cs",
"descriptor": {
"name": "IT",
"short_desc": "Data science is an interdisciplinary field that uses scientific methods, processes, algorithms and systems to extract knowledge and insights from noisy, structured and unstructured data, and apply knowledge and actionable insights from data across a broad range of application domains."
}
},
{
"id": "python",
"parent_category_id": "cs",
"descriptor": {
"name": "Python Programming",
"short_desc": "Python is an interpreted high-level general-purpose programming language."
}
}
],
"locations": [
{
"id": "iit-m",
"descriptor": {
"name": "IIT Madras",
"images": [
"string"
]
},
"gps": "lat,long",
"address": {
"name": "IIT Madras",
"building": "Himalaya Building",
"street": "Test street",
"locality": "Mylapur",
"city": "Chennai",
"state": "Tamil Nadu",
"country": "IND",
"area_code": "695030"
}
}
],
"items": [
{
"id": "ds_intro",
"descriptor": {
"name": "Intro to Data Science",
"short_desc": "Summary of course contents",
"long_desc": "Course details"
},
"price": {
"currency": "INR",
"value": "price of course"
},
"category_ids": [
"data_science",
"offline"
],
"location_id": "iit-m",
"time": {
"duration": "P2M",
"range": {
"start": "2021-12-25T09:00:00.000Z",
"end": "2022-02-25T23:59:00.000Z"
}
},
"recommended": true,
"tags": {
"skills": "Data Science,Deep Learning,Machine Learning,Big Data,Data Mining,Github,Python Programming,Jupyter notebooks,Rstudio,Methodology,Data Analysis,Pandas"
}
},
{
"id": "python3",
"descriptor": {
"name": "Python 3 Programming",
"short_desc": "Summary of course contents",
"long_desc": "Course details"
},
"price": {
"currency": "INR",
"value": "price of course"
},
"category_ids": [
"python",
"online_sync"
],
"time": {
"duration": "20D",
"range": {
"start": "2021-12-25T09:00:00.000Z",
"end": "2022-01-03T23:59:00.000Z"
}
},
"recommended": true,
"tags": {
"skills": "Json,Computer Programming,Python Programming,Sorting"
}
},
{
"id": "python_crash_course",
"descriptor": {
"name": "Crash Course on Python",
"short_desc": "Summary of course contents",
"long_desc": "Course details"
},
"price": {
"currency": "INR",
"value": "price of course"
},
"category_ids": [
"python",
"online_async"
],
"time": {
"duration": "10H"
},
"recommended": true,
"tags": {
"skills": "Basic Python Data Structures,Fundamental Programming Concepts,Basic Python Syntax,Python Programming,Object-Oriented Programming (OOP)"
}
}
]
}
]
}
}
}
message.catalog.bpp/providers.categories
will have categories that the courses in the catalog can belong to. Offline courses, recorded/static online courses and real time video courses can be top level categories.
message.catalog.bpp/providers.locations
will be used to specify the location details of offline courses.
message.catalog.bpp/providers.items
will have all the courses in the catalog. descriptor.name
will have the course name, descriptor.short_desc
can be used to give a summary of the course and descriptor.long_desc
can be used to give the course details. price.value
will have the price of the course. time.duration
can be used to specify the duration of the videos or approximate time it takes to complete an asynchronous online course. time.duration
in the case of offline and real time online courses will be the total duration of the course. For these 2 cases, the time.range
object can be used to specify the starting and ending date of the course . location_id
can be used to specify the location in case of offline courses. This will be a reference to an object in message.catalog.bpp/providers.locations array
. category_ids
will have the categories to which the course belongs to. The skills that can be learned from the course can be given in tags.skills
as comma separated keywords.
{
"context": {
"domain": "dsep:consultation",
"country": "IND",
"city": "string",
"action": "on_search",
"core_version": "0.9.3",
"bap_id": "mock_bap.com",
"bap_uri": "https://mock_bap.com/protocol",
"transaction_id": "string",
"message_id": "string",
"timestamp": "2021-12-22T11:53:29.434Z"
},
"message": {
"intent": {
"provider": {
"locations": [
{
"gps":"lat,lon",
"city": {
"code": "string"
},
"country": {
"code": "string"
}
}
]
},
"item": {
"descriptor": {
"name":"Service name"
},
"time": {
"range": {
"start": "2021-12-25T09:00:00.000Z",
"end": "2021-12-25T12:30:00.000Z"
}
},
"tags": {
"skills": "comma separated list of skills"
}
},
"category": {
"id": "tutoring"
}
}
}
}
message.intent.provider.locations
will have options to express the intent of where the consultation service is required. The GPS coordinate can be passed in gps
if that level of location accuracy is required. The STD code of the city can be passed in city.code
to get results from a city. ISO country codes can be used in country.code
if required.
message.intent.item.descriptor.name
can be used to search using the consultation service name.
message.intent.item.time.range
can be used to express the time range between which the service is required.
message.intent.item.tags.skills
can be used to pass on a comma separated list of skill keywords which can be used for fetching consultation services matching the skills.
message.intent.category
can be used to specify the category of the service. id can be used if the category_id is known and descriptor.name can be used to search with category name. For example id can be given as tutoring to return only tutoring services.
{
"context": {
"domain": "dsep:consultation",
"country": "IND",
"city": "string",
"action": "on_search",
"core_version": "0.9.3",
"bap_id": "mock_bap.com",
"bap_uri": "https://mock_bap.com/protocol",
"bpp_id": "mock_bpp.com",
"bpp_uri": "https://mock_bpp.com/protocol",
"transaction_id": "string",
"message_id": "string",
"timestamp": "2021-12-22T11:53:29.434Z"
},
"message": {
"catalog": {
"bpp/providers": [
{
"id": "consultation_services",
"descriptor": {
"name": "Consultation Services"
},
"categories": [
{
"id": "tutoring",
"descriptor": {
"name": "Tutoring",
"short_desc": "Recurring classes for a duration."
}
},
{
"id": "mentoring",
"descriptor": {
"name": "Mentoring",
"short_desc": "Single talk on a topic/skill."
}
},
{
"id": "cs",
"descriptor": {
"name": "Computer Science",
"short_desc": "Computer science is the study of computation, automation, and information."
}
},
{
"id": "english_language",
"descriptor": {
"name": "English Language",
"short_desc": "Skills based on English Language."
}
},
{
"id": "python",
"parent_category_id": "cs",
"descriptor": {
"name": "Python Programming",
"short_desc": "Python is an interpreted high-level general-purpose programming language."
}
}
],
"locations": [
{
"id": "iit-m",
"descriptor": {
"name": "IIT Madras",
"images": [
"string"
]
},
"gps": "lat,long",
"address": {
"name": "IIT Madras",
"building": "Himalaya Building",
"street": "Test street",
"locality": "Mylapur",
"city": "Chennai",
"state": "Tamil Nadu",
"country": "IND",
"area_code": "695030"
}
}
],
"items": [
{
"id": "ielts",
"descriptor": {
"name": "IELTS Preparation Specialization",
"short_desc": "Summary of consultation",
"long_desc": "Consultation details"
},
"price": {
"currency": "INR",
"value": "price of consultation"
},
"category_ids": [
"english_language",
"mentoring"
],
"location_id": "iit-m",
"time": {
"duration": "P3H",
"range": {
"start": "2021-12-25T09:00:00.000Z",
"end": "2021-12-25T12:30:00.000Z"
}
},
"recommended": true,
"tags": {
"skills": "Professional,Presentation,Writing,Communication,Listening,Speech"
}
},
{
"id": "applied_data_science_python",
"descriptor": {
"name": "Applied Data Science with Python Specialization",
"short_desc": "Summary of consultation",
"long_desc": "Consultation details"
},
"price": {
"currency": "INR",
"value": "price of consultation"
},
"category_ids": [
"python",
"tutoring"
],
"location_id": "iit-m",
"time": {
"duration": "1H",
"schedule": {
"times": [
"2021-12-25T09:00:00.000Z",
"2021-12-26T09:00:00.000Z",
"2021-12-27T09:00:00.000Z",
"2021-12-28T09:00:00.000Z",
"2021-12-29T09:00:00.000Z"
]
}
},
"recommended": true,
"tags": {
"skills": "Text Mining,Python Programming,Pandas,Matplotlib,Numpy,Data Cleansing,Data Virtualization,Data Visualization (DataViz),Machine Learning (ML) Algorithms,Machine Learning,Scikit-Learn,Natural Language Toolkit (NLTK)"
}
}
]
}
]
}
}
}
message.catalog.bpp/providers.categories
will have categories that the services in the catalog can belong to. Mentoring and tutoring can be top level categories.
message.catalog.bpp/providers.locations
will be used to specify the location details of service.
message.catalog.bpp/providers.items
will have all the services in the catalog. descriptor.name
will have the service name, descriptor.short_desc
can be used to give a summary of the service and descriptor.long_desc can be used to give the consultation details. price.value
will have the price of the service. time.duration
can be used to specify the duration of consultation service. In case of single event consultation service, the start and end time of the service can be given in the time.range
object. time.schedule.times
can be used to provide the times for a repeating tutoring consultation service. location_id
can be used to specify the location of the service. This will be a reference to an object in message.catalog.bpp/providers.locations
array. category_ids
will have the categories to which the service belongs to. The skills that are associated with the service can be given in tags.skills
as comma separated keywords.
@techframewirk can you please submit PR to v0.5.1-draft
?
@techframewirk need example JSONs to be published for the following APIs
search
on_search