beckn / DSEP-Specification

Open Interoperable Specifications for Skilling and Education. An adaptation of Beckn Protocol.
Other
18 stars 22 forks source link

Examples to be added to search APIs #5

Open ravi-prakash-v opened 2 years ago

ravi-prakash-v commented 2 years ago

@techframewirk need example JSONs to be published for the following APIs

search

on_search

techframewirk commented 2 years ago

Publish a Intent to search for Jobs with a particular skillset

{
    "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.

Publish a Recruitment catalog of job openings with two categories : Internship, Full-time Employment

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.

techframewirk commented 2 years ago

Publish a Intent to search for Training courses with a particular topic / skill

{
    "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.

Publish a Training Courses catalog with two categories : Online, Offline

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.

techframewirk commented 2 years ago

Publish a Intent to search for Consultation on a particular topic / skill

{
    "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.

Publish a Consultation catalog with two categories: Tutoring, Mentoring

{
    "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.

ravi-prakash-v commented 2 years ago

@techframewirk bap_id, bap_uri, transaction_id are not required in search and on_search

ravi-prakash-v commented 2 years ago

@techframewirk please remove price attribute in intent.

techframewirk commented 2 years ago

@techframewirk bap_id, bap_uri, transaction_id are not required in search and on_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.

techframewirk commented 2 years ago

Publish a Intent to search for Jobs with a particular skillset

{
    "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.

Publish a Recruitment catalog of job openings with two categories : Internship, Full-time Employment

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.

techframewirk commented 2 years ago

Publish a Intent to search for Training courses with a particular topic / skill

{
    "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.

Publish a Training Courses catalog with two categories : Online, Offline

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.

techframewirk commented 2 years ago

Publish a Intent to search for Consultation on a particular topic / skill

{
    "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.

Publish a Consultation catalog with two categories: Tutoring, Mentoring

{
    "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.

ravi-prakash-v commented 2 years ago

@techframewirk can you please submit PR to v0.5.1-draft?