All Downloads are FREE. Search and download functionalities are using the official Maven repository.

models.dsl.examples.referenceembed.TaxBlaster.rapid Maven / Gradle / Ivy

There is a newer version: 1.4.2
Show newest version
/* 
  This example  introduces reference embedding and property subsets.
  PersonTaxFilingCollection includes a minimal subset of Person properties, 
  and embeds all of the tax filing data.
*/
rapidModel TaxBlaster
	resourceAPI TaxBlasterInterface baseURI "http://taxblaster.com/api"
		/** The Index Resource is the entry point to the TaxBlaster API.  
    		To minimize coupling, consuming applications should start here, 
    		and follow the links to related resources.
		*/
		objectResource IndexObject type Index
			URI index
			/* 
			   By default, reference links will use the reference property name
			   as the link relation.  Here, we are overriding the reference 
			   links to use the IANA-registered 'subsection' link relation.
			   
			   http://www.iana.org/assignments/link-relations/link-relations.xhtml
			*/
			referenceLink > people
				targetResource PersonCollection 
				linkRelation subsection

			referenceLink > taxFilings
				targetResource TaxFilingCollection 
				linkRelation subsection

			mediaTypes
				application/json
			method GET getIndex
				response IndexObject statusCode 200
				response statusCode 404

		/** The list of Tax Filings visible to the authorized user. */
		default collectionResource TaxFilingCollection type TaxFiling
			URI /taxFilings
			mediaTypes
				application/json
			method GET getTaxFilingCollection
				request
				response TaxFilingCollection statusCode 200

			method POST updateTaxFilingCollection
				request TaxFilingCollection
				response statusCode 200
				response statusCode 400


		/** The list of TaxBlaster users.  The results will vary in membership 
  			 and level of detail, depending on your access privileges.
		*/
		default collectionResource PersonCollection type Person
			URI /people
			mediaTypes
				application/json
			method GET getPersonCollection
				request
				response PersonCollection statusCode 200

			method POST updatePersonCollection
				request PersonCollection
				response statusCode 200
				response statusCode 400


		/** An individual Tax Filing record, accessed by its ID */
		objectResource TaxFilingObject type TaxFiling
			URI taxFilings/{id}
				/** filingID of the requested TaxFiling */
				required templateParam id property filingID

			referenceLink > taxpayer
				targetResource PersonObject 
				targetProperties
					taxpayerID
					firstName


			mediaTypes
				application/json
			method GET getTaxFiling
				request
				response TaxFilingObject statusCode 200
				response statusCode 404


		/** An individual user by ID. */
		objectResource PersonObject type Person
			URI people/{id}
				/** taxpayerID of the requested Person */
				required templateParam id property  taxpayerID

			mediaTypes
				application/json
			method GET getPersonObject
				request
				response PersonObject statusCode 200

			method PUT putPersonObject
				request PersonObject
				response statusCode 200
				response statusCode 400


		objectResource PersonTaxFilingCollection type Person
			URI /people/{id}/taxFilings
			/* Subset of person properties included here. */
			only properties
				taxpayerID, lastName, firstName
			/* Tax filings data will be embedded within the Person representation. */
			referenceEmbed > taxFilings
				targetProperties
					currency
					filingID
					grossIncome
					jurisdiction
					period
					status
					taxLiability
					year

			mediaTypes
				application/json
			method GET getPersonTaxFilingCollection
				request
				response PersonTaxFilingCollection statusCode 200

			method PUT putPersonTaxFilingCollection
				request PersonTaxFilingCollection
				response statusCode 200
				response statusCode 400


	/** Supporting data types for the TaxBlaster API */
	dataModel TaxBlasterDataModel
		/** A tax filing record for a given user, in a given tax jurisdiction, in a specified tax year. */
		structure TaxFiling
			/** A unique, system-assigned identifier for the tax filing. */
			filingID : string
			/** Reference to the person who owns this filing. */
			taxpayer : reference to Person inverse taxFilings
			/** Country, province, state or local tax authority 
         	 	where this is being filed.
      		*/
			jurisdiction : string
			/** Tax year */
			year : gYear
			/** Period within the year, if any */
			period : int
			/** Currency code */
			currency : CurrencyCodeEnum
			/** Total income reported on tax filing. */
			grossIncome : decimal
			/** Net tax liability */
			taxLiability : decimal
			/** Tax filing status */
			status : TaxFilingStatusEnum

		/** A TaxBlaster user. */
		structure Person
			/** A unique, system-assigned identifier for the user. */
			taxpayerID : string
			/** Legal family name. */
			lastName : string
			/** Legal first name. */
			firstName : string
			/** Names previously used **/
			otherNames : string*
			/** Net worth, if known */
			netWorth : decimal
			/** Net worth special value */
			netWorthSpecialValue : SpecialValueEnum
			/** Preferred language for communications with this person */
			preferredLanguage : string
			/** Date of birth */
			DOB : date
			/* Inverse reference to TaxFilings.  PersonObject will have 
			   a list of hyperlinks to TaxFilingObject, the inverse of the 
			   TaxFilingObject.taxpayer hyperlink. Note that the inverse 
			   keyword must also be specified on TaxFiling.taxpayer
			*/
			/** Tax filings on record for this individual */
			taxFilings : reference to TaxFiling* inverse taxpayer

		/** The supporting data type for the Index resource.  Not meaningful
		    as a business entity, but required to support a single point of 
    		entry.
		*/
		structure Index
			people : reference to Person*
			taxFilings : reference to TaxFiling*

		/** Tax filing status enumeration, using default values */
		enum int TaxFilingStatusEnum
			DRAFT
			PENDING_CPA_REVIEW
			PENDING_CLIENT_REVIEW
			FILED
			AMENDED
			CLOSED

		/** Special Value Enum, using explicit integer values */
		enum int SpecialValueEnum
			NORMAL_VALUE : 0
			NOT_AVAILABLE : -65534
			NOT_APPLICABLE : -65533
			RESTRICTED : -65532

		/** Currency code enum, using explicit string values */
		enum string CurrencyCodeEnum
			EUR : "Euro"
			CAD : "Canadian Dollar"
			USD : "US Dollar"
			CHF : "Swiss Franc"
			JPY : "Japanese Yen"
			INR : "Indian Rupee"
			BRL : "Brazilian Real"






© 2015 - 2024 Weber Informatics LLC | Privacy Policy